gpt4 book ai didi

python - 使用 tkinter 更改单击时按钮的浮雕

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:18 26 4
gpt4 key购买 nike

我想创建标有列表中名称的按钮。当您单击按钮时,其凸纹将从凹槽变为凹陷。有一个条件,只允许下沉一粒纽扣。因此,当您点击一个按钮而另一个按钮已经凹陷时,凹陷的按钮必须返回凹槽。 How it looks like

我能够将我的想法付诸实践并编写整个代码。但是,我想知道是否有更好的方法来实现它。你有什么意见?这是我的代码:

import tkinter as tk
from functools import partial

class ButtonSunken:
def __init__(self):
self.tags = ('A','B','C','D','E','F')
self.buttons = []
self.win = tk.Tk()
self.create_buttons()
self.win.mainloop()

def create_buttons(self):
for j,i in enumerate(self.tags):
self.buttons.append(tk.Button(self.win, text = i))
self.buttons[-1].grid(column=0, row=j)
ho_general = partial(self.button_pressed, self.buttons[-1])
self.buttons[-1].configure(command = ho_general)

def button_pressed(self, button):
try: # first time active_button does not exist yet
self.active_button.configure(relief = 'groove')
except:
pass
button.configure(relief = 'sunken')
self.active_button = button

t_object = ButtonSunken()

非常感谢您的帮助!

最佳答案

你的方法非常好,只是不需要使用任何特殊函数即可完成。在我的代码中,我只是存储当前事件按钮的索引,并在按下下一个按钮时将其浮雕设置为groove,而下一个按钮的浮雕又会更改为sunken。看一下代码。

import tkinter as tk

class ButtonSunken:
def __init__(self):
self.tags = ('A','B','C','D','E','F')
self.buttons = []
self.active = None
self.win = tk.Tk()
self.create_buttons()
self.win.mainloop()

def create_buttons(self):
for j,i in enumerate(self.tags):
self.buttons.append(tk.Button(self.win, text=i, command=lambda x=j: self.button_pressed(x)))
self.buttons[-1].grid(column=0, row=j)

def button_pressed(self, idx):
if self.active is not None:
self.buttons[self.active].configure(relief='groove')
self.buttons[idx].configure(relief='sunken')
self.active = idx

t_object = ButtonSunken()

关于python - 使用 tkinter 更改单击时按钮的浮雕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53401582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com