gpt4 book ai didi

python - 为什么当我将正确的 .kv 代码放入外部 .kv 文件时,使用 screenmanager 的 .kv 代码不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:45 25 4
gpt4 key购买 nike

完美的功能代码:

from kivy.app import App
from kivy.lang import Builder

from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition

Builder.load_string("""
#:kivy 1.8

<StartScreen>:
BoxLayout:
Label:
text: "Press Button to"
Button:
text: "Start Server"
on_press:
root.start_server()
root.manager.current='stopscreen'

<StopScreen>:
BoxLayout:
Label:
text: "Press Button to"
Button:
text: "Stop Server"
on_press:
root.stop_server()
root.manager.current='startscreen'
""")

class StartScreen(Screen):
def start_server(self):
print('Server started.')


class StopScreen(Screen):
def stop_server(self):
print('Server stopped.')


sm = ScreenManager(transition=NoTransition())
sm.add_widget(StartScreen(name='startscreen'))
sm.add_widget(StopScreen(name='stopscreen'))


class MySpecialApp(App):

def build(self):
return sm


MySpecialApp().run()

现在,根据 Kivy Docs,应该可以将这段代码开头加载的字符串放入外部文件 myspecial.kv 中一旦我这样做,我的屏幕就会空白,没有按钮,没有文字。为什么会这样,我怎样才能让它发挥作用?

最佳答案

myspecial.kv 文件在应用程序启动时加载,但您在此之前初始化了您的小部件。在您运行 sm = ScreenManager(transition=NoTransition()) 时,kv 尚未加载,因此 ScreenManager 没有预期的样式。

您应该改为在 build 方法中创建您的小部件。 kv 文件在运行此方法之前加载,因此一切都应该正常运行。

关于python - 为什么当我将正确的 .kv 代码放入外部 .kv 文件时,使用 screenmanager 的 .kv 代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22899815/

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