赞
踩
安装virtualenv
pip install virtualenv
命令行cd切换的指定目录,并创建虚拟环境
virtualenv kivy-demo-env
然后在虚拟环境文件夹同级目录下新建项目,创建一个空文件夹(kivy-demo),打开PyCharm并打开刚刚创建的空文件夹,指定解释器。
打开PyCharm的设置界面,选中Project Interpreter,单击右上角的设置按钮,再选择Add ,添加解释器
选择Existing environment 将路径指向前一步创建的虚拟环境下的Scripts文件夹下的python.exe文件,之后单击OK按钮完成。
解释器设置完成后,在pycharm的底部打开terminal,如果显示了刚刚创建的虚拟环境名称(kivy-demo-env)就表示python解释器设置成功。
安装kivy
#安装依赖
pip install docutils pygments pypiwin32 kivy_deps.sdl2==0.1.22 kivy_deps.glew==0.1.12
#两种方式
pip install kivy_deps.gstreamer==0.1.17
pip install kivy_deps.angle==0.1.9
#安装kivy
pip install kivy==1.11.1
Hello World!
# 导入kivy的app类 from kivy.app import App # 导入控件 from kivy.uix.label import Label # 导入布局 from kivy.uix.boxlayout import BoxLayout class HelloPage(BoxLayout): #初始化 def __init__(self, **kwargs): super().__init__(**kwargs) # 添加一个Label self.lab = Label(text='Hello World!') # 将标签添加到页面控件中 self.add_widget(self.lab) class HelloApp(App): # 继承App类,实现build()方法 def build(self): # build()方法返回的控件,在kivy中称为根控件(root widget) # kivy将自动缩放根控件, return HelloPage() if __name__ == '__main__': # 启动应用 HelloApp().run()
#hello.py文件
# 导入kivy的app类 from kivy.app import App # 导入布局 from kivy.uix.boxlayout import BoxLayout # 布局 class HelloPage(BoxLayout): # 初始化 def __init__(self, **kwargs): super().__init__(**kwargs) # 继承App类 class HelloApp(App): # 实现App类的build()方法 def build(self): # 返回根控件 return HelloPage() if __name__ == '__main__': # 启动应用 HelloApp().run()
#hello.kv文件
.kv文件是不可以随意命名的,在启动应用后,kivy会自动查找App类名同名的小写的.kv文件(例如:class Hello App(App):、kivy查找小写hello.kv文件)
<HelloPage>:
Label:
text:'Hello World!'
浮动布局:FloatLayout
盒子布局:BoxLayout
锚点布局:AnchorLayout
网格布局:GridLayout
多页面布局:PageLayout
相对布局:RelativeLayout
分散布局:ScatterLayout
堆栈布局:StackLayout
大小:对于控件大小的控制
size属性
使用size属性需要指定宽和高的固定值,并且si’ze_hint属性必须设置为None,None
例如:
Button:
text:'hello'
size: 100, 100
size_hint: None, None
size_hint属性
设定值必须为0~1之间,表示控件的宽与当前窗口的宽的比例值,例如[0.1, 0.15]
Button:
text:'world'
size_hint:[0.1, 0.15]
位置:对于控件位置的控制
pos属性
直接指定具体的值,例如:[100,200]
注意:只有浮动布局FloatLayout才生效
pos_hint属性
通过比例值(0~1之间的值)进行设置
对于一个控件来说,
x轴上:左边界x线、正中间center_x线、右边界right线
控件x边界线,距离x轴的比例
y轴上:上边界top线、正中间center_y线、下边界y线
pos_hint通过一个字典值设定,例如:{‘center_x’:0.5, ‘y’:0.1}
<HelloPage>:
Button:
text:'hello'
size_hint:0.1, 0.2
pos_hint:{'center':0.3, 'top':0.75}
详
释(简单理解):
x轴上:左边界x线、正中间center_x线、右边界right线
控件左边界线x,距离x轴的比例
控件正中线,距离x轴的比例
控件右边界线,距离x轴的比例
y轴上:上边界top线、正中间center_y线、下边界y线
控件上边界线,距离y轴的比例
控件正中线,距离y轴的比例
控件下边界线y,距离y轴的比例
浮动布局,允许将子部件通过位置和尺寸放置在窗口的任意位置。使用FloatLayout时,可以根据当前窗口的大小和高度放置小部件。
使用size_hint属性、pos属性或pos_hint属性
当添加多个按钮都有重复的属性时,可以将其公共属性提取出来生成一个自定义的按钮,例如:
#设定相同字体大小,相同控件大小
<Button>:
font_size:50
size_hint:0.2, 0.2
<FloatLayout>:
Button:
text:'hello1'
background_color:0.2, 0.2, 0.5, 1
pos_hint:{'x':0, 'top':1}
Button:
text:'hello2'
Button:
text:'hello3'
将子部件水平或垂直排列的布局。如果不设置任何大小【size_hint】,子部件将会以10像素的间距平分父窗口的大小
BoxLayout布局,默认使用水平horizontal排列的方式。通过指定orientation属性设置方向。例如垂直方向,orientation:‘vertical’
<BoxLayout>:
orientation:'vertical'
Button:
text:'hello'
Button:
text:'vertical'
总结:
orientation属性:设置排列方向,水平或垂直
# 水平
orientation:'horizontal'
# 垂直
orientation:'vertical'
height:指定布局高度
width:指定布局宽度
padding属性:布局和子级之间填充(间距)默认[0,0,0,0]
spacing属性:子级和子级直接填充(间距)默认为0
padding的四个参数分别为[padding_left, padding_top, padding_right, padding_bottom],分别表示左边距、上边距、右边距、下边距
padding:[10, 20, 30, 40]
同时padding还接受两个参数的形式[padding_horizontal, padding_vertical],分别表示水平边距,垂直边距padding:[30, 50]
或者一个参数的形式[padding]表示周围边距padding: 30。
可以将子部件设置在左上、中上、右上、左中、正中、右中、左下、中下、右下。使用方法,只需指定两个属性,两个属性默认都是’center’
AnchorLayout:
anchor_x:'left'
anchor_y:'top'
将子部件排列成多行多列的矩阵,使用方法:必须设置具体的列数(cols)或者行数(rows)任意一个
GridLayout:
cols:3
Button:
text:'one'
Button:
text:'two'
Button:
text:'three'
网格布局也可以为部件指定大小,使用col_force_default属性,默认值为False,表示不使用列默认宽度,设置为True时,当子级未设置width和size_hint_x属性时,使用默认的列宽。列宽的默认值是0,使用col_default_width属性设置默认列宽
GridLayout:
cols:3
col_force_default:True
col_default_width:110
Button:
text:'one'
Button:
text:'two'
Button:
text:'three'
Button:
text:'four'
同样方法设置默认行高,row_force_default和row_default_height属性
针对每一列、每一行设置各自的宽度和高度
cols_minimum属性设置列宽,例如第一列设置120px, 第二列设置150px,第三列设置160px:
cols_minimum:{0:120, 1:150, 2:160}
rows_minimum属性设置行高,例如第一行设置30px, 第二行设置50px,第三行设置60px:
rows_minimum:{0:30, 1:50, 2:60}
由于该布局将每个子部件都作为一个单独的页面,所以不支持size_hint和pos_hint属性
基本属性
border属性:可以指定边界的大小,默认为50
page属性:设置当前页面默认显示哪一页
swipe_threshold属性:设置翻页的灵敏度
anim_kwargs属性:设置翻页动画与持续时间
<PageLayout>:
border:'100dp'
page:2
anim_kwargs:{'d':10, 't':'linear'}
swipe_threshold:0.9
Button:
text:''
Button:
text:''
Button:
text:''
布局操作方式与FloatLayout布局基本一致,但是它的定位属性x、center_x、right、y、center_y、top是相对于父布局的大小,而不是窗口的大小。
与相对布局类似,
由于该布局主要由Scatter小部件来实现,所以可以进行平移、旋转、缩放布局(一般布局图片)
ScatterLayout:
Image:
source:'picture.jpg'
只要不超过布局的范围,就可以进行垂直或水平的排列子项,并且各个小部件的大小可以不必相同。StackLayout布局可以通过orientation属性指定布局方向,默认值为’lr-tb‘,表示从左往右排列,从上往下排列
使用padding属性和spacing属性控制布局和部件,部件和部件的间距
padding属性有三种参数形式【左,上,右,下】【水平间距,垂直间距】【四周间距】
spacing属性有两种参数形式【水平间距,垂直间距】【四周间距】
使用minimum_size属性设置最小尺寸
使用minimum_height属性设置最低高度
####clock
总结:
书面上写的属性比较凌乱,不全面,哪个布局都有哪些属性可以使用后期有空再整理一份详细的
省略…
省略…
省略…
#(百度翻来的–书本描述看不懂)
安装PyInstaller
pip install pyinstaller
生成SPEC文件,main.py为主程序入口文件
#-F表示覆盖原先生成的spec文件
pyi-makespec -F main.py
打包生成EXE, 会生成build,dist两个目录, main.exe将在dist目录
pyinstaller main.spec
#遇到问题,安装pillow后好了
Unable to load image
pip uninstall pillow
pip install pillow
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。