【发布时间】:2020-02-20 00:46:04
【问题描述】:
我尝试访问/更改在循环中创建的按钮的按钮属性。
我的想法是将按钮收集在一个列表中,以便我可以访问每个按钮。有没有更好的办法?
目前我尝试使用按钮命令来更改单击按钮的文本。在“动作”功能中,当我尝试运行代码时,我得到错误代码“列表索引超出范围”!?
由于我是 python 和 tkinter 的新手,到目前为止已经过去了几个小时才能找到没有成功的解决方案。 每一个想法都将不胜感激。
我使用了完全相同的代码,但没有创建列表。代码正在运行,但是当我单击一个按钮时,只有最后一个创建的按钮更改了文本。难道是我必须以某种方式使用“StringVar”函数或“textvariable”吗?
import tkinter as tk
window = tk.Tk()
window.geometry("300x150")
window.title("Tic Tac Toe")
def action(i):
btns[i].configure(text = 'X')
btn_nr = -1
btns = []
for x in range(1,4):
for y in range(1,4):
btn_nr += 1
print(btn_nr)
btns.append(tk.Button(text='-', command = action(int(btn_nr))))
btns[int(btn_nr)].grid(row=x, column=y)
exit_button = tk.Button(text='Exit Game', command=window.destroy)
exit_button.grid(row=4, column=1, columnspan=15)
window.mainloop()
【问题讨论】:
-
你做过研究吗?这个网站上有很多关于在循环中创建按钮的问题和答案。
-
@BryanOakley:我主要使用谷歌搜索并花费大量时间进行真正的搜索。但现在我通过直接在stackoverflow中搜索成功了。感谢您的注意 ;-) 找到了解决方案 here 最后很高兴继续编码:-)
标签: python-3.x button tkinter