首页 > 解决方案 > 在 Python 中,如何使用 tkinter 限制打开窗口或按下按钮

问题描述

我正在用 Tkinter 做一个项目,但遇到了一个问题。这是代码:

from tkinter import *
Root = Tk()
def Open():
    Root1 = Toplevel()

MyButton = Button(Root, text="Open A New Window!", command=Open).pack()
mainloop()

这段代码的问题是,如果我按下按钮 10 次,它将打开 10 个窗口。我试过这个来解决它:

from tkinter import *
Root= Tk()

def Open():
    Root1 = Toplevel()
    MyButton = Button(Root, text="Open A New Window!", command = Open, state=DISABLED).grid(row=0, column=0)

MyButton = Button(Root, text="Open A New Window!", command = Open).grid(row= 0, column=0)

mainloop()

但这也不起作用,因为在我关闭新窗口后我无法再次打开它,因为按钮将保持禁用状态。

标签: pythonpython-3.xtkintermodule

解决方案


下面应该可以工作。不是最好的解决方案,但允许您在第二个窗口关闭时重新启用该按钮。

from tkinter import *
Root= Tk()

def Open():
    Root1 = Toplevel()
    Root1.protocol("WM_DELETE_WINDOW", lambda x=Root1: on_closing(x))
    MyButton['state'] = DISABLED

def on_closing(window):
    MyButton['state'] = ACTIVE
    window.destroy()

MyButton = Button(Root, text="Open A New Window!", command = Open)
MyButton.grid(row= 0, column=0)

mainloop()

推荐阅读