对于我的棋盘游戏,我需要按某个按钮然后禁用它(以防止用户或计算机在同一个地方放置“和平”)。我对此的问题基本上是设计方面的:如你所知,当在tkinter中禁用一个按钮时,它变成灰色,有点“视觉上阻挡”我放置的那个......这是我的图像我在谈论:
我的问题是,我如何禁用按钮,但保持它好像没有被禁用?我搜索过,我发现的唯一答案基本上是摆脱按钮并用图像替换它......如果这是我最好的选择,我该怎么做?使用for循环创建网格,该循环用按钮填充列表,然后使用grid()方法将它们显示到框架中。这看起来像是:
有没有其他方法可以通过tkinter方法实现这一目标?我宁愿不将按钮更改为带有绑定事件的图像,这似乎太复杂了,因为我不得不弄乱我的循环。谢谢!
谢谢!
答案 0 :(得分:1)
您可以使用各种选项控制前景色和背景色,例如foreground
,background
,disabledforeground
和highlightbackground
。您是否尝试过设置其中任何一种以获得所需的视觉行为?
您还可以选择禁用回调,因此该按钮会按下但不会执行任何操作。
答案 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
就这么简单!谢谢!