我正在尝试使用Tkinter禁用按钮:
from Tkinter import *
import os
class OptionWindow:
def __init__(self, value):
self.master = Tk()
self.master.minsize(500,500)
self.b1 = Button(self.master, text = "save Game", command =self.saveGame, state = NORMAL).grid(row = 0, column = 1, sticky = W)
def saveGame(self):
from modules.startingKit import options
options.saved = True
self.b1.configure (state = DISABLED)
然而,出于某种原因,当我按下“保存游戏”按钮时,它的外观不会改变。 我该怎么做才能禁用它?
答案 0 :(得分:4)
你犯了一个非常常见的错误,可能是因为互联网上有几个教程会犯同样的错误。
在python中,如果你x=foo().bar()
,x
的结果为bar()
。在您的代码中,您正在执行self.b=Button(...).grid(...)
。因此,self.b
设置为grid(...)
的结果。 grid(...)
始终返回None
。因此,执行self.b.configure(...)
与执行None.configure(...)
相同,显然不会按照您的想法执行。{/ p>
解决方案是在不同的步骤中创建小部件创建和小部件布局:
self.b1 = Button(...)
self.b1.grid(...)