【Kivy】二、控件学习——1、简单例程的学习

一、说明

kivy的界面可以有多种实现的方式,我们将一一的介绍。

二、代码

1、纯Python文件开发

# 导入Kivy 的App类,它是所有Kivy应用的基类
from kivy.app import App
#Kivy 内置了丰富的控件(widget), 如
# 按钮(button), 复选框(checkbox), 标签( l abel), 输入框(textinput),滚动容器(scrollable container) 等
from kivy.uix.button import Button
# 引入Box L ayout布局
from kivy.uix.boxlayout import BoxLayout

class MyLayout(BoxLayout):
    # 初始化
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        # 添加一个按钮
        button = Button(text="hello world")
        # 将按钮添加到页面控件中
        self.add_widget(button)
# 从App类中继承了Kivy应用最基本的方法, 如创建窗口、设置窗口的大小和位置等
class MyApp(App):
    # 实现TestApp类的build() 方法(继承自App类)
    def build(self):
        # build() 方法返回的控件, 在K ivy 中, 称之为“根控件" (root widget)
        # Kivy将自动缩放根控件,让它填满整个窗口
        return MyLayout()
#当.py文件被直接运行时, if __ name __ == '__ main _'之下的代码块将被运行
# 当.py文件以模块形式被导入时, if __ name __ == '__ main __'之下的代码块不被运行
if __name__ == "__main__":
    MyApp().run()

2、Python文件 + .kv文件实现

  • main.py
from kivy.app import App                    # 导入Kivy的基类,它是所有Kivy应用的基类
from kivy.uix.boxlayout import BoxLayout    # 导入布局
class MyLayout(BoxLayout):                  # 布局类
    def __init__(self, **kwargs):           # 初始化
        super().__init__(**kwargs)

class MyApp(App):                           # 继承App类
    def build(self):                        # 实现App类的build()方法
        # build()方法返回的控件,在kivy中,称之为“根控件”(root widget)
        # Kivy将自动缩放根控件,让它填满整个窗口
        return MyLayout()

if __name__ == "__main__":
    MyApp().run()
  • My.kv
    kv文件的名字是不可以随便命名的。是程序启动之后,查找继承于App的类的名字,去掉App之后的名字(例"class MyApp(App):",Kivy就会查找my.kv文件)
<MyLayout>:
    Button: # 添加一个按钮
        text: "hello whg" # 按钮文本

3、Python访问kv

将kv内容放到py文件中,避免出现文件名错误,启动不成功的情况

from kivy.app import App
from kivy.lang import Builder

kv = Builder.load_string('''
Button:
    text: "I was created by kv codes"
''')

class MyApp(App):
    def build(self):
        return kv

if __name__ == "__main__":
    MyApp().run()

4、Python包含kv(推荐)

这个代码避免了文件名的问题,更方便使用。

# 导入Kivy 的App类,它是所有Kivy应用的基类
from kivy.app import App
# 引入BoxLayout布局
from kivy.uix.boxlayout import BoxLayout
# 导入kv组件
from kivy.lang import Builder
Builder.load_string('''
<MyLayout>:
    Button:                 # 添加按键
        text: "hello whg"   # 设置按键名字
''')

class MyLayout(BoxLayout):
    # 初始化
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
# 继承App类
class MyApp(App):
    # 实现App类的build()方法
    def build(self):
        # 设置APP名字
        self.title = "demo"
        # build()方法返回的控件,在kivy中
        # 称之为“根控件”(root widget)
        return MyLayout()
#当.py文件被直接运行时,之下的代码块将被运行
# 当.py文件以模块形式被导入时,之下的代码块不被运行
if __name__ == "__main__":
    MyApp().run()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值