打开顶层窗口时变灰的按钮

问题描述

嘿,我正在使用Tkinter Python,并且有一个名称条目。

如果输入的名称无效,则会在新窗口中显示错误。我希望在打开此错误时将原始窗口或按钮显示为灰色,然后在关闭后恢复到正常状态。这可能吗?我不希望该按钮被发送垃圾邮件并打开多个错误框。

enter image description here

解决方法

我会告诉你两种方法。

我建议使用tkinter.messagebox向用户显示错误(或信息),因为它将禁用root窗口,直到其保持打开状态。它会根据系统偏好设置播放声音,并允许按Enter键关闭弹出窗口

赞!:

import tkinter as tk
import tkinter.messagebox as msgb   # use your preferred import style

def submit():
    if e.get() == 'something':  # check input here
        doSomething()
    else:
        msgb.ShowError('Invalid input','seems like you entered incorrect name')

root = tk.Tk()

e = tk.Entry(root)
e.pack()
btn = tk.Button(root,text='Submit',command=submit)
btn.pack()
root.mainloop()

第二种方法:

如果您真的只需要使用“顶级”窗口并且必须将输入框(和/或按钮)涂成灰色-这就是方法

import tkinter as tk

def submit():
    if e.get() == 'something':  # check input here
        doSomething()
    else:
        e.configure(state=tk.DISABLED)
        btn.configure(state=tk.DISABLED)
        newWindow = tk.Toplevel()
        showSomethingHere()

root = tk.Tk()

e = tk.Entry(root)
btn = tk.Button(root,command=submit)
e.pack()
btn.pack()
root.mainloop()