我正在尝试使用 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()
最佳答案
您需要为 Button()
提供主参数:
self.button = Button(master = self, text = "Close",command = lambda: self.close_windows())
master
是小部件的第一个参数,因此也可以通过以下方式完成:Button(self, text=...)
这是一个很好的做法,您应该养成始终显式提供 master
的习惯,否则 Tk 会将此参数默认为 None
并将其放置在根窗口上。
关于python - Tkinter - 在错误的屏幕上创建的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36579066/