2016-04-12 28 views
1

我想创建多个窗口使用tkinter,但我目前没有成功......当我创建一个子窗口并在其上放置一个按钮时,该按钮创建在父窗口!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.button = Button(master = self, text = "Close",command = lambda: self.close_windows()) 

master是第一个参数的构件,因此它也可以做到通过:Button(self, text=...)

这是很好的做法你应该养成明确提供master的习惯,否则Tk默认这个参数为None,并将它放在根窗口上。