2016-09-23 7 views
1

부모에게 상속하고 액세스 할 때 위젯이 이상하게 잘못되었습니다. 코드에 표시된 것과 동일한 위젯으로 세 섹션을 만들어야합니다.상속 및 부모에 대한 액세스가 잘못 되었습니까?

나는 그것이 실제로 어떻게 할 수 있는지 모른다. 이것이 어떻게 가장 현명한 방법으로 이루어질 수 있을지 생각해 보셨습니까?

import Tkinter as tk 

class Interface(tk.Frame): 
    def __init__(self, parent,start, ver_part, *args, **kwargs): 
     tk.Frame.__init__(self, parent, *args, **kwargs) 
     self.parent = parent 
     self.start = start 
     self.ver_part = ver_part 
     parent.title("Interface Window") 

     self.frame = tk.LabelFrame(parent, text="Verification Part - %s"%ver_part) 
     self.button = tk.Button(self.frame, text="%s"%ver_part) 

     self.frame.grid(row=0+start) 
     self.button.grid(row=0+start) 

class Main(Interface): 
    def __init__(self, parent, *args, **kwargs): 
     tk.Frame.__init__(self, parent, *args, **kwargs) 
     self.parent = parent 
     self.button_run = tk.Button(parent, text="Run", command=self.on_run()) 
     self.button_run.grid(row=3) 

    def on_run(self): 
     pass 

if __name__ == "__main__": 
    root = tk.Tk() 
    int_a = Interface(root,0, "A") 
    int_b = Interface(root,1, "B") 
    int_c = Interface(root,2, "C") 
    root.mainloop() 
+1

그리고 정확히하면 위젯 잘못? 나는 당신의 코드를 실행했고 똑같이 보이는 3 개의 위젯이있다. 무엇이 이상해야 하는가? –

+0

당신이 똑같은 일을하고 싶다면,이 방법으로 그렇게 할 수 있겠습니까? 이것이 어떻게 가장 현명한 방법으로 이루어질 수 있을지 생각해 보셨습니까? –

+0

그게 크게 의견을 기반으로하므로 SO에 대한 주제와 관련이 없습니다. 저는 tkinter에 대한 전문 지식이 없지만 코드는 괜찮아 보입니다. 편집 : 특정 질문에 대한 대답 대신 코드 검토가 필요한 경우 http://codereview.stackexchange.com/을 참조하십시오. –

답변

2

당신은 당신의 위젯 중 하나 parent보다는 self의 부모를주고있다.

변경이 줄이에

self.frame = tk.LabelFrame(parent, text="Verification Part - %s"%ver_part) 

:

당신이 Interface의 개별 인스턴스에 pack, place 또는 grid를 호출 할 필요가 있음을 완료하면
self.frame = tk.LabelFrame(self, text="Verification Part - %s"%ver_part) 

.

예를 들어

:

if __name__ == "__main__": 
    ... 
    int_a.pack(side="top", fill="both", expand=True) 
    int_b.pack(side="top", fill="both", expand=True) 
    int_c.pack(side="top", fill="both", expand=True) 
관련 문제