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

标签 python 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()

最佳答案

您需要为 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/

相关文章:

python - 从训练数据中提取特征

python - 将相同的 tkinter 跟踪方法绑定(bind)到多个 tk 变量

python - 如果以前从未运行过 Airflow 任务,如何手动运行它

python - 如何使用 Python 调用 TCL 过程

python - 即使变量发生变化,单击按钮时更改文本颜色也不起作用

Python:Dennis Nedry - 安全

Python3全局目录

python - 如何控制 Tkinter 根窗口中的键盘重复延迟?

python - 如何在 tkinter 中出现标签之前添加时间延迟?

python - 获取 Checkbutton 状态