2017-11-28 1 views
-3

나는 AccountPopup (Popup)이라는 클래스를 가지고있다 :
나는 AccountPopup 클래스의 state_id_text 변수를 정의한다. 나는 .kv 파일에서 self.state_id_text.text 값을 얻는다. 이 함수의 값파이썬 - 자기 자신을 다른 함수에 넘겨주기

def populate_tree_view_account_city(tree_view, parent, node): 

및 인쇄.

class TreeviewCityAccount(Popup): 
    treeviewAccountCity = ObjectProperty(None) 
    tv = ObjectProperty(None) 
    h = NumericProperty(0) 
    #ti = ObjectProperty() 
    popup = ObjectProperty() 

    def __init__(self, **kwargs): 
     super(TreeviewCityAccount, self).__init__(**kwargs) 
     self.tv = TreeView(root_options=dict(text=""), 
         hide_root=False, 
         indent_level=4) 
     for branch in treeAccountState: 
      populate_tree_view_account_city(self.tv, None, branch) 
     #self.remove_widgets() 
     self.treeviewAccountCity.add_widget(self.tv) 
     Clock.schedule_once(self.update, 1) 

    def remove_widgets(self): 
     for child in [child for child in self.treeviewAccountCity.children]: 
      self.treeviewAccountCity.remove_widget(child) 

    def update(self, *args): 
     self.h = len([child for child in self.tv.children]) * 24 

    def filter(self, f): 
     self.treeviewAccountCity.clear_widgets() 
     self.tv = TreeView(root_options=dict(text=""), 
          hide_root=False, 
          indent_level=4) 
     new_tree = [] 
     for n in treeAccountCity: 
      if f.lower() in n['node_id'].lower(): 
       new_tree.append(n) 
     for branch in new_tree: 
      populate_tree_view_account_city(self.tv, None, branch) 

     self.treeviewAccountCity.add_widget(self.tv) 



def populate_tree_view_account_city(tree_view, parent, node): 
    #print(state_id_text.text) 
    if parent is None: 
     tree_node = tree_view.add_node(TreeViewLabelAccountCity(text=node['node_id'], 
                is_open=True)) 
    else: 
     tree_node = tree_view.add_node(TreeViewLabelAccountCity(text=node['node_id'], 
                is_open=True), parent) 

    for child_node in node['children']: 
     populate_tree_view_account_city(tree_view, tree_node, child_node) 

cur.execute("SELECT stateId FROM m_state WHERE stateName=?", (state_id_text.text,)) 
rows = cur.fetchall() 

treeAccountState = [] 

for r in rows: 
    treeAccountState.append({'node_id': r[1], 'children': []}) 

class AccountPopup(Popup): 
    state_id_text = ObjectProperty(None) 
    def display_cities_treeview_account(self, instance): 
     print(self.state_id_text.text) 
     if len(instance.text) > 0: 
      if self.popupAccountCity is None: 
       self.popupAccountCity = TreeviewCityAccount() 
       self.popupAccountCity.popup_account_city = self 
       self.popupAccountCity.filter(instance.text) 

나를 도와 줄 사람이 있습니까?

+1

글쎄, 인스턴스를 만든 다음이 속성을 함수에 전달해야합니다. 내가 잘못 이해했다면, 당신이 기대하는 바를 이해하지 못한다는 것을 분명히 말하십시오. – scharette

+0

클래스'AccountPopup' 내부에서'populate_tree_view_account_city' ** 함수를 ** 호출하는 것이 목표입니까? – scharette

답변

0

당신은 기능과 액세스 그것에 클래스 'AccountPopup inside the function populate_tree_view_account_city , pass an object of the class 'AccountPopup의 데이터 멤버 state_id_text에 액세스하십시오. 새 인스턴스가 만들어 질 때마다 populate_tree_view_account_city 함수 안에 클래스의 새 인스턴스를 만들고 state_id_text을 초기화하려면 AccountPopup 내에 __init__ 메서드를 사용합니다.

관련 문제