Python Tkinter-窗口打开时如何禁用按钮
我是“Tkinter”库的新手,我想知道如何在新窗口打开时禁用按钮。例如,如果单击主窗口上的按钮,将打开一个新窗口,并且主窗口上的所有按钮都将被禁用。关闭窗口后,应再次启用按钮 以下是我的代码示例:Python Tkinter-窗口打开时如何禁用按钮,python,python-3.x,tkinter,tk,Python,Python 3.x,Tkinter,Tk,我是“Tkinter”库的新手,我想知道如何在新窗口打开时禁用按钮。例如,如果单击主窗口上的按钮,将打开一个新窗口,并且主窗口上的所有按钮都将被禁用。关闭窗口后,应再次启用按钮 以下是我的代码示例: from tkinter import * root = Tk() def z(): w = Toplevel() bu = Button(w, text = "Click!", font = 'bold') bu.pack() b = Button(root, te
from tkinter import *
root = Tk()
def z():
w = Toplevel()
bu = Button(w, text = "Click!", font = 'bold')
bu.pack()
b = Button(root, text = "Click!", command = z)
b.pack()
root.mainloop()
额外:如果有人能告诉我如何在不关闭整个“Tkinter”程序的情况下关闭“root”窗口,我将不胜感激。例如,如果辅助窗口打开,我希望能够关闭第一个窗口,或者至少最小化它。您可以隐藏窗口
root.withdraw()
# or
root.iconify()
再来一次
root.deiconify()
禁用按钮
b['state'] = 'disabled'
b['state'] = 'normal'
启用按钮
b['state'] = 'disabled'
b['state'] = 'normal'
编辑:正如@acw1668在评论中指出的,当用户使用标题栏上的关闭按钮[X]时,需要win.protocol来运行close_秒
import tkinter as tk # PEP8: `import *` is not preferred
#--- functions ---
def close_second():
win.destroy()
b['state'] = 'normal'
root.deiconify()
def open_second():
global win
b['state'] = 'disabled'
#root.iconify()
root.withdraw()
win = tk.Toplevel()
win_b = tk.Button(win, text="Close Second", command=close_second)
win_b.pack()
# run `close_second` when user used closing button [X] on title bar
win.protocol("WM_DELETE_WINDOW", close_second)
# --- main ---
root = tk.Tk()
b = tk.Button(root, text="Open Second", command=open_second)
b.pack()
root.mainloop()
欢迎来到特金特图书馆 我知道你为什么要用w了,你可以用root,它就可以工作了
from tkinter import *
root = Tk()
def z():
bu = Button(root, text = "Click!", font = 'bold')
bu.pack()
b = Button(root, text = "Click!", command = z)
b.pack()
root.mainloop()
问我python中是否有任何问题,tkinterroot是主窗口,它总是关闭其他子窗口。如果要关闭根目录,请在此之后使用新的mainloopb['state']=“disabled”和b['state']=“normal”root.iconify或root.draw和root.deiconify创建新的根目录窗口Tk。如果通过单击标题栏上的“关闭”按钮关闭顶层目录,则根目录窗口可能不会被取消认证。@acw1668好的一点,我忘了。我添加了win.protocolWM\u DELETE\u窗口,然后关闭