我想切换到第二个屏幕并返回,但是当我按下绑定到它的按钮时,什么也没做。
我在网上环顾四周,有多种方法可以在屏幕之间切换,但是我发现这种方法最简单,最干净,尽管它对我不起作用。
代码将是不言自明的。
python代码:
class Manager(ScreenManager):
pass
class Screen_one(Screen):
pass
class Screen_two(Screen):
pass
class Screen_three(Screen):
pass
kv文件的一部分:
ScreenManager:
id: sm
Screen_one:
id: screen_one
name: 'screen1'
manager: 'sm'
Screen_two:
id: screen_two
name: 'screen2'
manager: 'sm'
Screen_three:
id: screen_three
name: 'screen3'
manager: 'sm'
<Screen_one>:
FloatLayout:
Button:
text: "Click1"
size_hint: .2, .05
pos_hint: {'x': .2, 'y': .4}
on_release: app.root.current = 'screen2'
Label:
text: 'Hello!'
pos_hint: {'x': -0.2, 'y': 0}
<Screen_two>:
FloatLayout:
canvas.before:
Color:
rgba: 1, 0, 0, 1
Rectangle:
size: self.size
pos: self.pos
Button:
text: "Click2"
size_hint: .2, .05
pos_hint: {'x': .1, 'y': .3}
on_release: app.root.current = 'screen1'
答案 0 :(得分:1)
用app.root.current
替换所有出现的app.root.ids.sm.current
,因为root
不是ScreenManager
,并使用ids
和sm
来引用孩子,ScreenManager:
。
当解析您的kv文件时,kivy会收集所有标有的小部件 id,并将它们放在此 self.ids 字典类型属性中。