初始化 Kivy 屏幕的正确方法是什么?
What is the correct way to initialize a Kivy Screen?
我正在使用带有 .kv 文件的 Kivy。这就是我的 Python 代码的样子:
class WelconeScreen(Screen):
def __init__(self, **kwargs):
self.name='home'
super(Screen,self).__init__(**kwargs)
class QuestionScreen(Screen):
def __init__(self, **kwargs):
self.name='question'
super(Screen,self).__init__(**kwargs)
class RootScreen(ScreenManager):
pass
class TestApp(App):
def build(self):
return RootScreen()
if __name__ == '__main__':
appVar = TestApp()
TestApp().run()
这是我的 .kv 文件:
<RootScreen>:
WelcomeScreen:
QuestionScreen:
<WelcomeScreen>:
Button:
text: 'Download DB'
<QuestionScreen>:
BoxLayout:
Button:
text: 'My settings button'
Button:
text: 'Back to menu'
on_press: root.manager.current = 'home'
这是使用 Kivy 初始化屏幕的正确方法吗?这行得通,但我不确定构造函数是否是正确的方法。
name
是一个 kivy 属性,所以你可能想在调用 super 之后而不是之前初始化它。
你也可以在 kv 中设置它,这样你就不必为此定义一个 __init__
:
<WelcomeScreen>:
name: 'home'
Button:
text: 'Download DB'
你写:
class 欢迎屏幕
但它是:
class WelcomeScreen
我正在使用带有 .kv 文件的 Kivy。这就是我的 Python 代码的样子:
class WelconeScreen(Screen):
def __init__(self, **kwargs):
self.name='home'
super(Screen,self).__init__(**kwargs)
class QuestionScreen(Screen):
def __init__(self, **kwargs):
self.name='question'
super(Screen,self).__init__(**kwargs)
class RootScreen(ScreenManager):
pass
class TestApp(App):
def build(self):
return RootScreen()
if __name__ == '__main__':
appVar = TestApp()
TestApp().run()
这是我的 .kv 文件:
<RootScreen>:
WelcomeScreen:
QuestionScreen:
<WelcomeScreen>:
Button:
text: 'Download DB'
<QuestionScreen>:
BoxLayout:
Button:
text: 'My settings button'
Button:
text: 'Back to menu'
on_press: root.manager.current = 'home'
这是使用 Kivy 初始化屏幕的正确方法吗?这行得通,但我不确定构造函数是否是正确的方法。
name
是一个 kivy 属性,所以你可能想在调用 super 之后而不是之前初始化它。
你也可以在 kv 中设置它,这样你就不必为此定义一个 __init__
:
<WelcomeScreen>:
name: 'home'
Button:
text: 'Download DB'
你写: class 欢迎屏幕
但它是: class WelcomeScreen