2016-12-10 1 views
0

2 개의 TkInter 모듈이 있습니다. 하나는 툴바 모듈 (tBar.py)이고 두 번째 모듈은 일반 모듈 (tBarCall.py)입니다.가져온 모듈에서 위젯을 참조합니다.

1) 도구 모음 모듈 (tBar.py) : 도구 모음 프레임을 만들고 단추 위에 저장, 추가, 삭제 등의 단추를 만듭니다.

2) 클라이언트 마스터 모듈 (tBarCall.py) : 툴바 모듈을 가져오고 실행합니다. 그 다음 단계에서 툴바 프레임에 배치 된 일부 버튼을 활성화/비활성화해야합니다. 버튼을 활성화/비활성화하려고 할 때 나타나는 오류를 확인하십시오.

클라이언트 마스터 모듈 내부에서 도구 모음 모듈을 가져올 수 있지만 도구 모음 프레임의 단추를 활성화/비활성화 (참조) 할 수 없습니다.

내가 어떻게이 일을 도와 줄 수 있습니까? 여기

코드이다

=== tBar.py ===

import tkinter as tk 

def attach_toolbar(rootWindow, action, save_record, first_record): 
    if action == "I": 
     fToolbar = tk.Frame(rootWindow, padx = 1, pady = 1, bg="RED") 
     fToolbar.grid(row=0, column = 0, sticky='w') #pack(anchor="nw",expand=1) # 
     bSave = tk.Button(fToolbar, text="save", command=save_record)  #width=6, height=2, text = "Save\nrecord", font=("Calibri", 8), 
     bFirst = tk.Button(fToolbar, text="first", command=first_record)  #width=6, height=2, text = "First\nrecord", font=("Calibri", 8), 

     bSave.pack(side="left") 
     bFirst.pack(side="left") 
    else: 
     bFirst.configure(state="disabled") 

=== tBarCall.py ===

import tkinter as tk 
import tBar 

def save_record(): 
    print ("save_record") 

def first_record(): 
    print ("first_record") 

class startModule: 
    def __init__(self, rootWindow): 
     print("__init__") 

     self.rootWindow = rootWindow 
     self.rootClient = tk.Toplevel(self.rootWindow) 
     self.rootClient.geometry('1300x650+1+1') 
     tBar.attach_toolbar(self.rootClient, "I", save_record, first_record) 
     #tBar.attach_toolbar(self.rootClient, "D", save_record, first_record) #UnboundLocalError: local variable 'bFirst' referenced before assignment 
     #bFirst.configure(state="disabled") #NameError: name 'bFirst' is not defined   
     #self.rootClient.bFirst.configure(state="disabled") #AttributeError: 'Toplevel' object has no attribute 'bFirst' 
     #self.rootClient.fToolbar.bFirst.configure(state="disabled") #AttributeError: 'Toplevel' object has no attribute 'fToolbar' 

if __name__ == "__main__": 
    root = tk.Tk() 
    startModule(root) 
    root.mainloop() 

Errorscr

답변

0

해결 방법이 있습니다. 도구 모음 모듈 (예 : tBarCall.py)에서 DICTIONionary를 사용하여 버튼의 세부 정보를 저장, 추가, 삭제하는 등의 작업을 수행했습니다. 그런 다음이 사전을 호출 모듈 인 tBarCall.py에 반환했습니다. 이제이 사전을 사용하여 버튼을 비활성화 할 수 있습니다.

tBar.py

retButtonIdentifier = {"bSave" : bSave} 
retButtonIdentifier["bFirst"]=bFirst  

return retButtonIdentifier 

tBarCall.py

self.dictButtonIdentifier = tBar.attach_toolbar(self.rootClient, "I", save_record, first_record) 

self.dictButtonIdentifier["bSave"].configure(state="disabled")    
self.dictButtonIdentifier["bFirst"].configure(state="disabled")      
: 내가했던 추가 코딩이되어 다음
관련 문제