【发布时间】:2021-10-06 19:59:27
【问题描述】:
您好,我正在尝试在 kivy 中切换屏幕,但它在这里不起作用,我认为这是必要的代码: .KV:
WindowManager:
MainScreen:
FileScreen:
<MainScreen>:
name: "MainScreen"
MDFloatingActionButtonSpeedDial:
bg_hint_color: app.theme_cls.primary_light
data: app.data
root_button_anim: True
callback: app.btn
<FileScreen>:
name: "FileScreen"
MDBoxLayout:
MDLabel:
text: "test"
Python:
class MainScreen(Screen):
def switch(self):
self.current = "FileScreen"
class FileScreen(Screen):
pass
class WindowManager(ScreenManager):
pass
class app(MDApp):
data = {
'Create': 'file-document',
'Open': 'folder-open'
}
def btn(self, instance):
print('callback')
icon = instance.icon
# if you want check button, use
if isinstance(instance, MDFloatingBottomButton):
if icon == 'file-document':
print('Create')
MainScreen.switch(self)
elif icon == 'folder-open':
print('Open')
我真的不知道在这个 kivy 领域该做什么,所以希望社区可以帮助我。 如果您想知道,我也在使用 KivyMD。
【问题讨论】:
-
这实际上并不是 Kivy 特有的任何东西,而是一个普遍的 Python 错误:你调用
MainScreen.switch(self)所以self是你的app类实例,所以你实际上在做的是等价的到app.current = "FileScreen"这显然没有做任何事情。您需要调用您在 gui 中显示的MainScreen类的 instance 的switch方法。 -
我不知道你是怎么做到的,因为我对 python @inclement 还很陌生
-
这个问题很快就会被关闭,因为它是answered
标签: python python-3.x kivy kivy-language kivymd