2013-07-10 60 views
0

所以我創建一個應用程序,我需要有這樣的事情:Kivy HELP:控件和屏幕經理

的Widget 1: - GridLayout的從JSON文件中的數據,每個數據行去一個按鈕,所以基本上當你點擊按鈕時彈出框出現。 - 彈出:這其中包含了數字鍵盤輸入密碼,然後你點擊一個按鈕,在主窗口部件

主窗口部件進入: - 這一個從JSON文件,然後放讀取數據它在網格佈局上,就像在窗口小部件上一樣,我可以在python中執行widgets,而不是在kv語言中,而我只是不能做一件事:從小部件1更改爲主部件...請幫助我,我很長一段時間卡住這個東西...

+2

歡迎SO佩德羅。如果您發佈了一些您已經嘗試過的示例代碼,那麼您的問題更有可能得到答案。 – butch

+0

我不明白JSON有什麼問題。我給你一個如何從'Screen' 1變成'Screen' 2的例子。2.也許你的問題是你使用的是其他的'Widget'而不是'Widget'。 ScreenManager只接受'Screen'小部件。 –

回答

2

爲了在屏幕之間切換,你只需要使用current財產。基本上你必須告訴ScreenManager哪一個是當前屏幕,但首先你必須在它們上面寫上一個名字。這裏有一個例子:

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.floatlayout import FloatLayout 

Builder.load_string(""" 
<Phone>: 
    AnchorLayout: 
     anchor_x: 'center' 
     anchor_y: 'top' 
     ScreenManager: 
      size_hint: 1, .9 
      id: _screen_manager 
      Screen: 
       name: 'screen1' 
       Label: 
        text: 'The first screen' 
      Screen: 
       name: 'screen2' 
       Label: 
        text: 'The second screen' 
    AnchorLayout: 
     anchor_x: 'center' 
     anchor_y: 'bottom' 
     BoxLayout: 
      orientation: 'horizontal' 
      size_hint: 1, .1 
      Button: 
       text: 'Go to Screen 1' 
       on_press: _screen_manager.current = 'screen1' 
      Button: 
       text: 'Go to Screen 2' 
       on_press: _screen_manager.current = 'screen2'""") 

class Phone(FloatLayout): 
    pass 

class TestApp(App): 
    def build(self): 
     return Phone() 

if __name__ == '__main__': 
    TestApp().run() 

on_press: _screen_manager.current = 'screen1' 

會告訴屏管理,以更改名爲「屏蔽1」的屏幕,這個其他線路

name: 'screen1' 
+0

不錯的答案!我不是OP,但這對我很有用。 – SMT