如何将Tkinter Button状态从禁用更改为正常?

时间:2013-04-16 20:44:21

标签: python button tkinter state

当某些事件发生时,我需要将DISABLED的状态从NORMAL更改为Button

这是我的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

Anyonne可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:54)

您只需将按钮state的{​​{1}}设置为self.x

normal

self.x['state'] = 'normal'

此代码将进入将导致启用Button的事件的回调。


此外,正确的代码应为:

self.x.config(state="normal")

self.x = Button(self.dialog, text="Download", state=DISABLED, command=self.download) self.x.pack(side=LEFT) 中的方法pack会返回Button(...).pack(),您将其分配给None。您实际上想要将self.x的返回值分配给Button(...),然后在以下行中使用self.x

答案 1 :(得分:7)

我认为更改窗口小部件选项的快捷方法是使用configure方法。

在您的情况下,它看起来像这样:

self.x.configure(state=NORMAL)

答案 2 :(得分:0)

这对我有用。我不确定为什么语法会有所不同,但是尝试激活,非活动,停用,禁用等的每种组合都非常令人沮丧。在小写的大写形式中,引号中的引号放在方括号中。出于某种原因,对我来说是成功的组合..与众不同?

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()