我正在学习编写我的第一个 kivy 应用程序。我想实现一个Android电话应用程序的UI,即它在屏幕底部有几个按钮,当按下一个按钮时,上面的屏幕会变成相应的内容(可能是一个记录列表,或经典设置屏幕)。
我想我可能需要两个自定义的容器小部件用于按钮组和上述内容,而内容小部件可能需要动态删除所有子小部件并为按钮 on_press 事件添加相应的新子小部件。我不确定这里的想法是否合适,或者对于这种使用 kivy 的经典 android 应用程序 ui 有现成的解决方案?
我正在学习编写我的第一个 kivy 应用程序。我想实现一个Android电话应用程序的UI,即它在屏幕底部有几个按钮,当按下一个按钮时,上面的屏幕会变成相应的内容(可能是一个记录列表,或经典设置屏幕)。
我想我可能需要两个自定义的容器小部件用于按钮组和上述内容,而内容小部件可能需要动态删除所有子小部件并为按钮 on_press 事件添加相应的新子小部件。我不确定这里的想法是否合适,或者对于这种使用 kivy 的经典 android 应用程序 ui 有现成的解决方案?
我认为您要的是ScreenManager。Kivy 提供了一个很好的例子,但这里是另一个例子。我认为它与您正在寻找的更相似:
从 kivy.app 导入 App 从 kivy.lang 导入 Builder 从 kivy.uix.floatlayout 导入 FloatLayout
Builder.load_string("""
<Phone>:
AnchorLayout:
anchor_x: 'center'
anchor_y: 'top'
ScreenManager:
size_hint: 1, .9
id: _screen_manager
Screen:
name: 'screen1'
Label:
text: 'The first screen'
Screen:
name: 'screen2'
Label:
text: 'The second screen'
AnchorLayout:
anchor_x: 'center'
anchor_y: 'bottom'
BoxLayout:
orientation: 'horizontal'
size_hint: 1, .1
Button:
text: 'Go to Screen 1'
on_press: _screen_manager.current = 'screen1'
Button:
text: 'Go to Screen 2'
on_press: _screen_manager.current = 'screen2'""")
class Phone(FloatLayout):
pass
class TestApp(App):
def build(self):
return Phone()
if __name__ == '__main__':
TestApp().run()