Tkinter按钮创建在错误的屏幕上

2024-04-26 11:16:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建多个窗口使用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()

Tags: selfmasterinittkinterdefloginbuttonroot
1条回答
网友
1楼 · 发布于 2024-04-26 11:16:31

您需要为Button()提供主参数:

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

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

这是一个很好的实践,您应该养成总是显式提供master的习惯,否则Tk会将这个参数默认为None,并将它放在根窗口上。你知道吗

相关问题 更多 >