2023年1月14日,更新(纠错)中。
声明:1、本文章总结自该系列视频,且为个人用笔记,转载需注明出处。2、让人不适的评论将会被删评+屏蔽。
一、main.py与.kv文件
基本的 Kivy 应用需要一个main.py与.kv文件。main.py顾名思义,而.ky文件主要用于搭建窗口布局(类似于PyQt中的.ui文件)。虽然理论上可以在python文件中搭建窗口布局,但本着前后端分离的原则,不建议这么做。
.kv文件应当与你的应用(类)同名且为小写,若你的应用名为TheLab或TheLabApp(此时kivy会自动忽视“App”三个字母),kivy会自动寻找main.py同路径下名为thelab.kv的文件。
如下为一对可以运行的文件,依次名为main.py和mytask.kv。
from kivy.app import App
from kivy.uix.widget import Widget
class MainWidget(Widget):
pass
class MyTask(App):
pass
if __name__ == '__main__':
MyTask().run()
MainWidget: # 启动界面
<MainWidget>:
Button: # 按钮控件
text: "A" # 内部字符
size: "40dp", "40dp" # 尺寸
pos: "50dp", "100dp" # 位置
color: 1,0,0,1 # 颜色
Label: # 标签控件
text: "B"
size: "100dp", "100dp"
pos: "200dp", "200dp"
此时main.py运行结果应该如下图。
二、补充解释
1、kivy坐标系
此窗口应当是可以任意拖动调节大小的,且按钮A与标签B相对于左下角的位置固定。因此需要明确的是,与numpy和opencv均不同,kivy的坐标系原点为窗口左下角,向右为x轴(第一维),向上为y轴(第二维)。
2、像素与dp
为保证控件尺寸在不同像素密度的屏幕上显示大小相同,使用dp作为尺寸单位而不是像素,更加具体的区别请自行百度。格式上,使用dp的尺寸需要加单引号或双引号,而使用像素的尺寸可直接使用数字。如示例代码中的“Button”控件的尺寸,使用dp表示如下。
size: "40dp", "40dp"
而使用像素表示如下。(二者实际看起来大小可能不同)
size: 40, 40
40dp*40dp通常为手指大小。
3、颜色
颜色分量依次为RGBA,且为浮点数0-1而不是传统的0-255,允许忽略小数点前的0。
4、绘制顺序
一般情况下,kivy将按顺序绘制控件,这意味着若A和B的位置相同,B将被覆盖绘制在A上。