2016-04-12 13 views
1

tkinterを使用して複数のウィンドウを作成しようとしていますが、これまでに成功していません...子ウィンドウを作成してボタンを押すと、親ウィンドウ!あなたはマスター引数でButton()を提供する必要がありTkinter - 間違った画面上にボタンが作成されました

from tkinter import * 

class Login_screen(Frame): 
    def __init__(self,master): 
     Frame.__init__(self, master) 
     self.grid() 
     self.button1 = Button(text = "Open",command = lambda: self.open_login()) 
     self.button1.grid() 

    def open_login(self): 
     self.root2 = Toplevel() 
     self.root2.geometry("400x200") 
     self.app2 = Main_screen(self.root2) 

class Main_screen(Frame): 
    def __init__(self,master): 
     Frame.__init__(self,master) 
     self.grid() 
     self.button = Button(text = "Close",command = lambda: self.close_windows()) 
     self.button.grid() 

    def close_windows(self): 
     self.grid_forget() 

root = Tk() 
root.geometry("800x600") 
app = Login_screen(root) 
root.mainloop() 

答えて

2

:これは良い習慣ですButton(self, text=...)

:それも行うことができますので、

self.button = Button(master = self, text = "Close",command = lambda: self.close_windows()) 

masterは経由ウィジェットへの最初の引数でありますいつも明示的にmasterを提供するという習慣に入るべきです。さもなければ、TkはこのargをNoneにデフォルト設定し、それをルートウィンドウに置きます。

関連する問題