Python Tkinter-如何禁用现有按钮
我正在尝试使用Tkinter禁用按钮:Python Tkinter-如何禁用现有按钮,python,button,tkinter,Python,Button,Tkinter,我正在尝试使用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.sav
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)
然而,由于某种原因,当我按下“保存游戏”按钮时,它的外观没有改变。
我必须怎么做才能禁用它?您犯了一个非常常见的错误,可能是因为互联网上有几个教程犯了同样的错误 在python中,如果执行
x=foo().bar()
,x
将给出bar()
的结果。在代码中,您正在执行self.b=Button(…).grid(…)。因此,self.b
被设置为网格(…)
的结果<代码>网格(…)始终返回None
。因此,执行self.b.configure(…)
与执行None.configure(…)
是一样的,这显然不会像您认为的那样
解决方案是在单独的步骤中创建小部件和布局小部件:
self.b1 = Button(...)
self.b1.grid(...)
你犯了一个非常常见的错误,可能是因为互联网上有几个教程犯了同样的错误 在python中,如果执行
x=foo().bar()
,x
将给出bar()
的结果。在代码中,您正在执行self.b=Button(…).grid(…)。因此,self.b
被设置为网格(…)
的结果<代码>网格(…)始终返回None
。因此,执行self.b.configure(…)
与执行None.configure(…)
是一样的,这显然不会像您认为的那样
解决方案是在单独的步骤中创建小部件和布局小部件:
self.b1 = Button(...)
self.b1.grid(...)
不确定这是否重要:你启动主循环了吗
self.master.mainloop()
作为\uuuu init\uu
函数中的最后一项。或者将Tk()
实例作为参数带到OptionWindow
的构造函数中,并将其传递给self.master
。很抱歉,我忽略了这一点。不确定这是否重要:是否启动了主循环self.master.mainloop()
作为\uuuu init\uu
函数中的最后一项。或者将Tk()
实例作为参数带到OptionWindow
的构造函数中,并将其传递给self.master
。很抱歉,我忽略了这一点。