python - 在 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()
但这也不起作用,因为在我关闭新窗口后我无法再次打开它,因为按钮将保持禁用状态。
解决方案
下面应该可以工作。不是最好的解决方案,但允许您在第二个窗口关闭时重新启用该按钮。
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()
推荐阅读
- java - Embedded Jetty WebAppContext 中的通配符支持
- wordpress - htaccess 重定向除基本 url 之外的所有链接
- node.js - 在猫鼬模式中使用操作作为方法的好习惯
- python - 哪种日期格式如下所示:46:53.4
- java - maven依赖版本问题
- python-3.x - 如何修复 Pandas Import AttributeError“类型对象'numpy.ndarray'没有属性'__array_function__'”
- reactjs - 我应该如何将 Storybooks 与 React、Webpack、Docker、lighttpd 集成?
- arcore - 如何使用使用 arcore 和 sceneform 的按钮从场景中删除单个可渲染对象?
- python - 如何在numpy数组中添加维度?(125, 125) 到 (125, 125, 1)
- java - 正常条件运算和三元运算的结果不同