无法在Kivy中切换屏幕

时间:2020-08-26 15:06:57

标签: python kivy

所以我刚开始使用Kivy创建一个简单的应用程序。 我有2个屏幕(主屏幕和注册屏幕)。但是,我无法从主屏幕切换到注册屏幕。也没有错误代码,所以我不确定出了什么问题

Python代码

from kivy.app import App
from kivy.properties import ObjectProperty
from kivy.graphics import Rectangle, Color, Line
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import Screen,ScreenManager


class Main(Screen):
    def btn_tambah_data(self):
        print("Add Data")

    def btn_edit_data(self):
        print("Edit Data")

    def btn_lihat_data(self):
        print("See Data")

class Register(Screen):
    pass


class WindowManager(ScreenManager):
    pass


class Kosless(App):
    def build(self):
        return Main()


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

Kv代码(对不起,如果我的代码有点混乱)

WindowManager:
    Main:
    Register:

<Main>:
    name: "Main"
    FloatLayout:

        canvas:

            Color:
                rgba: .62,.91,.968,1
            Rectangle:
                pos : self.pos
                size : self.size

            Color:
                rgba:1,.984,.58,1
            Rectangle:
                size: self.width , self.height/25
                pos: self.pos

        Label:
            text:"Kosless"
            font_size:30
            color: 1,.984,.58
            pos_hint:{"y":0.4}
            bold:True
        Button:
            text:"Add Data"
            pos_hint:{"y":0.55,"x":0.25}
            size_hint: 0.5 ,0.1
            background_color:0.1, 0.5, 0.6, 1
            on_press : app.root.current: "Register"    ##I think something went wrong here
        Button:
            text:"Edit Data"
            size_hint: 0.5 ,0.1
            pos_hint:{"y":0.40,"x":0.25}
            background_color:0.1, 0.5, 0.6, 1
            on_press : root.btn_edit_data()
        Button:
            text:"See Data"
            size_hint: 0.5 ,0.1
            pos_hint:{"y":0.25,"x":0.25}
            background_color:0.1, 0.5, 0.6, 1
            on_press : root.btn_lihat_data()

<Register>:
    name: "Register"
    Button:
        text:"Test"

这是主屏幕,理论上,如果我单击“添加数据”按钮,将显示注册屏幕。但是什么也没发生... Main Screen

我该怎么办? 你们有什么建议吗? 感谢您阅读我的文章,祝您愉快!

1 个答案:

答案 0 :(得分:1)

您的代码有两个问题。首先是为了切换屏幕,您需要一个ScreenManager,但是您的app.rootScreenMain)。您可以将build()方法更改为:

class Kosless(App):
    def build(self):
        return Builder.load_file('kv_file_name')

on_press Add Data的{​​{1}}属性应为:

Button