2014-01-26 2 views
0

Когда я запустил приложение, загрузился макет .kv, я ввожу необходимую информацию, а set_info вызывается, но экран не изменяется на макет в set_info(), я не сделал никаких gui, прежде чем я собираюсь кругами, пытаясь понять это. Как я могу заставить дисплей меняться после ввода информации в текстовые поля?получение отображения для изменения в приложении kivy

class GetInformation(AnchorLayout): 
    initial_bet = ObjectProperty() 
    initial_odds = ObjectProperty() 

    def set_info(self): 
     self.layout = GridLayout(cols=1, spacing=10, size_hint_y=None) 
     self.layout.bind(minimum_height=self.layout.setter('height')) 
     for k in offset_lay((Decimal(self.initial_bet.text),Decimal(self.initial_odds.text)): 
      btn = Button(text=str(k[0]), size_hint_y=None, height=40) 
      self.layout.add_widget(btn) 
     root = ScrollView(size_hint=(1, .80), size=(600, 600)) 
     root.add_widget(self.layout) 
     return root 



class AccountDetailsTextInput(TextInput): 
    next = ObjectProperty() 
    def _keyboard_on_key_down(self, window, keycode, text, modifiers): 

     if keycode[0] == 9: # 9 is the keycode for tab 
      self.next.focus = True 
     elif keycode[0] == 13: # 13 is the keycode for enter 
      self.parent.parent.set_odds() 
     else: 
      super(AccountDetailsTextInput, self)._keyboard_on_key_down(
       window, keycode, text, modifiers) 



class Offset(App): 
    def build(self): 
     return GetInformation() 

если имя == "главный": Offset() работать()

<GetInformation>: 
anchor_y: "top" 
anchor_x: "right" 
initial_bet:bet 
initial_odds:odds 
GridLayout: 
    cols: 2 
    row_default_height: "40dp" 
    row_force_default: True 
    spacing: "10dp" 
    padding: "10dp" 
    Label: 
     markup:True 
     font_size: '32sp' 
     text: "[color=ff3333][/color] [color=3333ff][b]Enter your initial stake:[/color]" 
    AccountDetailsTextInput: 
     id:bet 
     next:odds 
    Label: 
     markup:True 
     font_size: '32sp' 
     text: "[color=ff3333][/color] [color=3333ff][b]Enter your initial odds:[/color]" 
    AccountDetailsTextInput: 
     id:odds 
     next: bet 
    Button: 
     size_hint_y: None 
     #id: set_odd 
     height: "40dp" 
     text: "Calculate" 
     background_color: .7, .7, 1, 1 
     halign: 'center' 
     valign: 'middle' 
     on_press: root.set_info() 

ответ

0
root = ScrollView(size_hint=(1, .80), size=(600, 600)) 
root.add_widget(self.layout) 
return root 

Этот бит является проблемой.. Вы сделали это root и добавили к нему макет, но тогда вы никогда не добавляете root ко всему, чтобы он не отображался.

Решение проблемы заключается в том, чтобы добавить root к существующему виджету, что is часть отображаемого дерева виджетов.

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