kivy学习笔记-转到新界面之两种方法

修改或切换应用程序界面显示的Widgets方法如下例程(在上一篇笔记中代码的基础上扩展),具体方法和说明见代码中的注释:

MyForm:        # 顶级GUI部件类
<MyForm>:      # 定义MyForm类
    orientation:"vertical"    # 定义orientation属性的值
    text_input:text_box       # 定义用于外部引用的名称,指向id为text_box的GUI部件

    BoxLayout:                # 定义子GUI部件
        height:"40dp"         # 高度
        size_hint_y:None      # 纵向占比

        TextInput:
            id:text_box
            size_hint_x:50  # 横向占比(多个同级GUI部件的占比比例来分配实际大小)

        Button:
            text:"Button A"
            size_hint_x:20
            on_press:root.buttona_act()   # 指定Button被按下时执行的方法

        Button:
            text:"Button B"
            size_hint_x:20
            on_press:root.chg_widget()   # 调用转换界面方法

        Button:
            text:"Button C"
            size_hint_x:10
            on_press:root.chg_widget2() # 调用另一种转换界面方法

<MyForm2@BoxLayout>:  # 定义另一个Widgets
    Button:
        text:"Button D"
       
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivy.uix.label import Label
from kivy.factory import Factory

class MyForm(BoxLayout):  # 此处类定义虽然为空,但会将my.kv的GUI定义的相关“程序”引入,即相当于在此定义
    text_input = ObjectProperty()   # 在类中添加text_input属性,对应kv文件中用于外部引用的名称,最终指向对应id的GUI部件
    def buttona_act(self):
        print(self.text_input.text) # 获取text_input所指向GUI部件的text值,并打印到控制台

    # 转换界面方法1
    def chg_widget(self):
        self.clear_widgets()
        self.add_widget(Label(text='location')) # 添加程序生成的Widget

    # 转换界面方法2
    def chg_widget2(self):
        self.clear_widgets()
        cur_wdgt = Factory.MyForm2()
        self.add_widget(cur_wdgt)        # 添加kv文件中定义的Widget

class MyApp(App):         # 类名MyApp 在运行时正好自动载入对应的my.kv文件
    pass

MyApp().run()

运行效果图:

1.程序的初始界面图

2.点击Button B后的程序界面图:

3.点击Button C后的程序界面图:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值