2015-02-15 3 views
0

Я использую Kivy с .kv-файлом. Это то, что мой код Python выглядит следующим образом:Каков правильный способ инициализации экрана Kivy?

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? Это работает, но я не уверен, что конструктор - это правильный способ сделать это.

ответ

2

name является собственностью kivy, поэтому вы, вероятно, захотите ввести его после вызова супер, а не раньше.

Вы также можете установить его в кв вместо этого, то вам не нужно определять __init__ только для этого:

<WelcomeScreen>: 
    name: 'home' 
    Button: 
     text: 'Download DB' 
+0

Это именно то, что я хотел: инициализировать экран в моем .kv-файле. Спасибо! –

0

Вы пишете: класс WelconeScreen

Но это: класс Welco m eScreen

Смежные вопросы