Tkinter - 如何禁用现有按钮

时间:2013-03-28 20:19:21

标签: 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.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)

然而,出于某种原因,当我按下“保存游戏”按钮时,它的外观不会改变。 我该怎么做才能禁用它?

1 个答案:

答案 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(...)