2017-12-02 3 views
0

Wenn ich auf Konto (root.display_account()) dann rufen Sie display_account(). Nach dieser RVACCOUNT() -Funktion aufrufen. Nach dem wenn ich auf + Konto hinzufügen klicken Sie dann def add_account (Selbst-): call
Python/Kivy: Zugriff Attribut Wert in .kv Datei

ich habe eine Klasse AccountPopup, die ein Attribut state_text definieren und den Wert Text zuweisen: 'Testing' in .kv Datei
Wie Wert von state_text 'Testing' erhalten und in on_text passieren: root.filter (self.text, state_text) und in def Filterfunktion drucken.

test.py

class AccountPopup(Popup): 
    state_text = ObjectProperty(None) 
    popupAccountCity = ObjectProperty(None) 


    def display_cities_treeview_account(self, instance): 
     if len(instance.text) > 0: 
      #if self.popupAccountCity is None: 
      self.popupAccountCity = TreeviewCityAccount(self.state_text.text) 
      self.popupAccountCity.filter(instance.text,self.state_text.text) 
     self.popupAccountCity.open() 


class TreeviewCityAccount(Popup): 
    state_text = ObjectProperty(None) 

    def __init__(self,state_text, **kwargs): 
     print(state_text) 

    def filter(self, f,state): 
     print(state) 


class RVACCOUNT(BoxLayout): 
    def add_account(self): 
     self.mode = "Add" 
     popup = AccountPopup(self) 
     popup.open() 

class MainMenu(BoxLayout): 

    def display_account(self): 
     self.dropdown.dismiss() 
     self.remove_widgets() 
     self.rvaccount = RVACCOUNT() 
     self.content_area.add_widget(self.rvaccount) 


class FactApp(App): 
    title = "Test" 

    def build(self): 
     self.root = Builder.load_file('test.kv') 
     return MainMenu() 



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

test.kv

<AccountPopup>: 
    state_text:state_text 

     TextInput: 
      id:state_text 
      text:'Testing' 

<TreeviewCityAccount>: 

    BoxLayout 
     orientation: "vertical" 

     TextInput: 
      id: treeview 
      size_hint_y: .1 
      on_text: root.filter(self.text,state_text) 

<RVACCOUNT>: 
    BoxLayout: 
     orientation: "vertical" 
     Button: 
      size_hint: .07, .03 
      text: "+Add Account" 
      on_press: root.add_account() 


<MainMenu>: 
    content_area: content_area 
    dropdown: dropdown 

    BoxLayout: 
     orientation: 'vertical' 
     #spacing : 10 

     BoxLayout: 
      canvas.before: 
       Rectangle: 
        pos: self.pos 
        size: self.size 

      MenuButton: 
        id: btn 
        text: 'Master' 
        size : (60,30) 
        on_release: dropdown.open(self) 

      CustDrop: 

       DropdownButton: 
        text: 'Account' 
        size_hint_y: None 
        height: '32dp' 
        on_release: root.display_account() 

Kann mir jemand helfen?

+0

Wo öffnen Sie das AccountPopup? – EL3PHANTEN

Antwort

0

Sie sollten es als self.state_text überall verweisen, ist es auch in der py-Datei und kann als Zugang eine StringProperty machen als

on_text: root.filter(self.text,root.state_text) 

Wurzel in kv in Ihrem Fall Widget aka <TreeviewCityAccount>: auf die am weitesten links verweist.

Siehe https://kivy.org/docs/api-kivy.lang.html enter image description here

Alternativ Sie mit ids in der kv-Datei arbeiten können.

Verwandte Themen