gpt4 book ai didi

python - 如何在标签中显示当前屏幕名称?

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:23 24 4
gpt4 key购买 nike

我正在使用 Kivy Screen Manager,并且尝试在标签中显示当前屏幕的名称。但是,当我使用以下标签运行应用程序时,我的应用程序立即崩溃。

MyScreenManager:
LoginScreen:
MenuScreen:
SettingsScreen:
LogoutScreen:

<MenuScreen@Screen>:
name: 'menu'
BoxLayout:
orientation: 'vertical'
Header:
Toolbar:
BoxLayout:

<Header@BoxLayout>:
orientation: 'vertical'
height: 100
size_hint_x: 1
size_hint_y: None
Label:
text: 'Dealer App'
color: 0.212, 0.486, 0.169, 1
font_size: 48
Label:
height: 30
text_size: self.width*.9, None
halign: 'right'
size_hint_y: None
text: app.root.current_screen
font_size: 16
color: 0, 0, 1, 1

此标签未在第一个屏幕上使用,但启动应用程序时出现以下错误。

...
89: halign: 'right'
90: size_hint_y: None
>> 91: text: app.root.current_screen
92: font_size: 16
93: color: 0, 0, 1, 1
...
AttributeError: 'NoneType' object has no attribute 'bind'

我想用kv语言来添加这个标签。是第91行有问题还是因为这段代码运行时当前屏幕还没有创建?如果是后者,如何让它等到当前屏幕存在之后?

最佳答案

发生这种情况是因为还没有app.root。您没有指定在何处加载此 kv,但它必须在构建 App 之前发生。基本上,您不应该尝试通过 app.root 绑定(bind)任何内容。

解决此问题的方法取决于您的确切 kv,但这适用于例如:

ScreenManager:
Screen:
name: 'a'
Label:
text: root.current

如果 ScreenManager 不是您的 kv 规则的根,那么您需要以另一种方式绑定(bind)它:

<MyScreen@Screen>:
name: 'a'
Label:
text: root.manager.current

ScreenManager:
MyScreen

Screen 实例可以通过 manager 属性访问其 ScreenManager

此外,您要使用current,而不是current_screen。后者是实际的 Screen 小部件,而前者是当前屏幕的字符串名称。

关于python - 如何在标签中显示当前屏幕名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24076912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com