2016-09-23 4 views
1

継承と親へのアクセスでは、ウィジェットは幾分奇妙です。コードに表示されているのと同じウィジェットで3つのセクションを作成する必要があります。継承と親へのアクセスに何か問題がありますか?

私はそれが本当に意味をなさすことができるかどうかわかりません。どのようにこれが最も賢い方法でやり遂げることができるか考えていますか?

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の専門家ではありませんが、コードはOKと思われます。編集:特定の質問に対する回答ではなくコードレビューが必要な場合は、http://codereview.stackexchange.com/に問い合わせることができます。 –

答えて

2

あなたのウィジェットの1 parentではなくselfの親を与えています。

変更この行:これまで

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

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

あなたはInterfaceの個々のインスタンスにpackplaceまたはgridを呼び出す必要が完了したら。例えば

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) 
関連する問題