Python:ttk:禁用/启用按钮

Python:ttk:禁用/启用按钮,python,ttk,Python,Ttk,我想根据一些内部逻辑更改ttk.按钮的状态。我创建一个按钮并将其与样式关联: cardBtnStyle = ttk.Style() cardBtnStyle.configure('CB.TButton') cardBtn = ttk.Button(top, text="Make SD card", style='CB.TButton', command = cardCreateCallBack).grid(column=1, row=5) 以下声明无效: style.configure('CB

我想根据一些内部逻辑更改ttk.按钮的状态。我创建一个按钮并将其与样式关联:

cardBtnStyle = ttk.Style()
cardBtnStyle.configure('CB.TButton')
cardBtn = ttk.Button(top, text="Make SD card", style='CB.TButton', command = cardCreateCallBack).grid(column=1, row=5)
以下声明无效:

style.configure('CB.TButton', state='disabled')
但当我创建这样一个按钮时,它被禁用:

cardBtn = ttk.Button(top, text="Make SD card", style='CB.TButton', state='disabled', command = cardCreateCallBack).grid(column=1, row=5)
如何在Python中更改ttk.Button状态

操作系统:Ubuntu 13.10


Python:2.7.5+/p>按钮状态不是其样式的一部分。您可以使用该方法对其进行修改:

cardBtn.state(["disabled"])   # Disable the button.
cardBtn.state(["!disabled"])  # Enable the button.

我得到以下错误:Tkinter回调回溯异常(最近一次调用最后一次):文件“/usr/lib/python2.7/lib tk/Tkinter.py”,第1473行,在调用返回self.func(*args)文件“/usr/lib/python2.7/lib tk/Tkinter.py”,第534行,在callit func(*args)文件“/viaVPN Production.py”,第42行,在state\u thread cardBtn.state中([“disabled”])AttributeError:“NoneType”对象没有属性“state”@yegorich,该错误消息表示
cardBtn
设置为
None
。但是,您问题中的代码为其分配了
ttk.Button
的实例,因此不应该是这种情况。请仔细检查是否正在调用
state()
初始化按钮实例后。我想我已经发现了问题:如果您立即放置对象(
.grid()
.pack()
),则无法创建对象。必须分两个阶段完成:创建对象,然后放置对象。这样您可以使用其句柄。