1

我正在尝试使用 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)

然而,由于某种原因,当我按下“保存游戏”按钮时,它的外观并没有改变。我必须做什么才能禁用它?

4

1 回答 1

4

您犯了一个非常常见的错误,可能是因为互联网上有几个教程犯了同样的错误。

在 python 中,如果你这样做x=foo().bar()x会给出bar(). 在您的代码中,您正在执行self.b=Button(...).grid(...). 因此,self.b设置为 的结果grid(...)grid(...)总是返回None。正因为如此,做self.b.configure(...)与做None.configure(...)显然不会做你认为它会做的事情是一样的。

解决方案是在单独的步骤中创建小部件和小部件布局:

self.b1 = Button(...)
self.b1.grid(...)
于 2013-03-28T20:26:32.010 回答