禁用按钮但在视觉上保持它就像没有禁用一样

时间:2013-11-24 08:33:19

标签: python button user-interface tkinter

对于我的棋盘游戏,我需要按某个按钮然后禁用它(以防止用户或计算机在同一个地方放置“和平”)。我对此的问题基本上是设计方面的:如你所知,当在tkinter中禁用一个按钮时,它变成灰色,有点“视觉上阻挡”我放置的那个......这是我的图像我在谈论:

enter image description here

我的问题是,我如何禁用按钮,但保持它好像没有被禁用?我搜索过,我发现的唯一答案基本上是摆脱按钮并用图像替换它......如果这是我最好的选择,我该怎么做?使用for循环创建网格,该循环用按钮填充列表,然后使用grid()方法将它们显示到框架中。这看起来像是:

enter image description here

有没有其他方法可以通过tkinter方法实现这一目标?我宁愿不将按钮更改为带有绑定事件的图像,这似乎太复杂了,因为我不得不弄乱我的循环。谢谢!

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用各种选项控制前景色和背景色,例如foregroundbackgrounddisabledforegroundhighlightbackground。您是否尝试过设置其中任何一种以获得所需的视觉行为?

您还可以选择禁用回调,因此该按钮会按下但不会执行任何操作。

答案 1 :(得分:0)

结果是为了禁用按钮但保持其外观,你必须禁用它的回调以使其“无响应”(正如@Bryan Oakley和@martineau所说,谢谢!)并且还将其'浮雕'更改为让它保持“固定”(它转移到右下角,但这已经足够了)。

想象一下,你有这个通用按钮:

button = tkinter.Button(frame, height=0, bg='blue',\
                    activebackground='blue',width = 0, text = " ", image = self.blank, \
                    command=lambda row=row_index, \
                        column=column_index: \
                        self.button_clicked(row,column))

现在,当您想要禁用它但保持其原始外观时,您可以更改按钮的以下属性:

button['command'] = 0 #this disables the callback
button['relief'] = 'sunken' #makes the button fixed

就这么简单!谢谢!

相关问题