【问题标题】:Tkinter - how to disable an existing buttonTkinter - 如何禁用现有按钮
【发布时间】:2013-03-28 20:19:21
【问题描述】:

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

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

【问题讨论】:

  • 不确定是否重要:您是否启动了主循环? self.master.mainloop() 作为 __init__ 函数中的最后一件事。或者将Tk() 实例作为参数带到OptionWindow 的构造函数并传递给self.master
  • 我有...很抱歉我在这里省略了。

标签: python button tkinter


【解决方案1】:

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

在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(...)

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多