如何将 Tkinter 按钮状态从禁用更改为正常?
Posted
技术标签:
【中文标题】如何将 Tkinter 按钮状态从禁用更改为正常?【英文标题】:How to change Tkinter Button state from disabled to normal? 【发布时间】:2013-04-09 10:19:57 【问题描述】:当某些事件发生时,我需要将Button
的状态从DISABLED
更改为NORMAL
。
这是我的 Button 的当前状态,当前处于禁用状态:
self.x = Button(self.dialog, text="Download",
state=DISABLED, command=self.download).pack(side=LEFT)
self.x(state=NORMAL) # this does not seem to work
任何人都可以帮助我如何做到这一点?
【问题讨论】:
【参考方案1】:您只需将按钮self.x
的state
设置为normal
:
self.x['state'] = 'normal'
或
self.x.config(state="normal")
此代码将进入将导致启用按钮的事件的回调中。
另外,正确的代码应该是:
self.x = Button(self.dialog, text="Download", state=DISABLED, command=self.download)
self.x.pack(side=LEFT)
Button(...).pack()
中的方法pack
返回None
,您将其分配给self.x
。您实际上想将Button(...)
的返回值分配给self.x
,然后在下一行中使用self.x.pack()
。
【讨论】:
应该补充一点,这段代码将进入触发按钮启用的事件的回调中。 我试过得到错误:self.x['state'] = 'enabled'我认为更改小部件选项的一种快速方法是使用configure
方法。
在你的情况下,它看起来像这样:
self.x.configure(state=NORMAL)
【讨论】:
【参考方案3】:这对我有用。我不确定为什么语法不同,但是尝试激活、非活动、停用、禁用等的每种组合都非常令人沮丧。在小写大写的引号中,在括号中的括号中的引号中等等。好吧,这里是出于某种原因,对我来说获胜的组合.. 与其他人不同?
import tkinter
class App(object):
def __init__(self):
self.tree = None
self._setup_widgets()
def _setup_widgets(self):
butts = tkinter.Button(text = "add line", state="disabled")
butts.grid()
def main():
root = tkinter.Tk()
app = App()
root.mainloop()
if __name__ == "__main__":
main()
【讨论】:
你的不一样,因为你没有从 tkinter 导入常量,from tkinter import *
这将导入 DISABLED 和其他常量,否则 tkinter.DISABLED
将工作相同。以上是关于如何将 Tkinter 按钮状态从禁用更改为正常?的主要内容,如果未能解决你的问题,请参考以下文章
当使用 PHP 在后端验证电子邮件时,如何将输入提交从禁用更改为启用?
如何在一个页面上禁用 Android 后退按钮并在所有其他页面上更改为退出按钮