所以我刚开始使用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
我该怎么办? 你们有什么建议吗? 感谢您阅读我的文章,祝您愉快!
答案 0 :(得分:1)
您的代码有两个问题。首先是为了切换屏幕,您需要一个ScreenManager
,但是您的app.root
是Screen
(Main
)。您可以将build()
方法更改为:
class Kosless(App):
def build(self):
return Builder.load_file('kv_file_name')
on_press
Add Data
的{{1}}属性应为:
Button