【问题标题】:Unable to switch screen in Kivy无法在 Kivy 中切换屏幕
【发布时间】:2020-08-26 23:33:37
【问题描述】:

所以我刚开始使用 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

我该怎么办? 你们有什么建议吗? 感谢您阅读我的帖子,祝您有美好的一天!

【问题讨论】:

    标签: python kivy


    【解决方案1】:

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

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

    Add Data Buttonon_press 属性应该是:

        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" # changed `:` to `=`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多