因此,我有一个按钮小部件,我希望它显示的文本和颜色的小部件一旦点击。我不能使用.cget
方法来实现这一点,因为在一个循环中创建了多个同名按钮,所以它只会给出最后创建的按钮小部件的文本和颜色。尽量不使用复杂的方法&;让它尽可能简单
for x in range(5):
for y in range(10):
if x == 0:
x_row = 'A'
elif x == 1:
x_row = 'B'
elif x == 2:
x_row = 'C'
elif x == 3:
x_row = 'D'
elif x == 4:
x_row = 'E'
seats_button = tkinter.Button(windowmain, text = '%s' % (str(x_row)+str(y+1)), command = lambda: messagebox.showinfo('Testing',seats_button.cget('text')),font=customFont) # Says E10 as it was the last created widget
seats_button.grid(row = x, column = y)
if str(x_row)+str(y+1) in available[0] or str(x_row)+str(y+1) in available[1] or str(x_row)+str(y+1) in available[2] or str(x_row)+str(y+1) in available[3] or str(x_row)+str(y+1) in available[4]:
seats_button["background"] = 'green'
我该如何着手解决这个问题?谢谢
将
lambda
与按钮的command
的字符串参数一起使用,并将字符串参数的默认值设置为按钮文本:这是因为默认值是在定义
lambda
时构造的根据您的代码更改座椅颜色的建议:
使用
btnText
作为键,将btn_list
从本地array
更改为全局dictionary
:定义lambda要调用的新函数:
相关问题 更多 >
编程相关推荐