我有一个具有相似名称的多重变量(button1,button2,button3 ......等) 我试图制作一个按钮,每次用户按下所有按钮(以及其他特定部分的情况)的文本都会被擦除。
我的代码看起来像这样:
from tkinter import *
from tkinter import ttk
root = Tk()
def reset():
pass
button1 = ttk.Button(root, text="bla")
button2 = ttk.Button(root, text="bla")
button3 = ttk.Button(root, text="bla")
button4 = ttk.Button(root, text="bla")
button5 = ttk.Button(root, text="bla")
button6 = ttk.Button(root, text="bla")
button7 = ttk.Button(root, text="bla")
button8 = ttk.Button(root, text="bla")
button9 = ttk.Button(root, text="bla")
reset_button = ttk.Button(root, text="Restart", command=lambda: reset())
root.mainloop()
现在我尝试创建一个生成器来创建一个多行来执行 for 循环而没有任何成功。 我知道我可以这样做:
def reset():
button1.config(text="")
button2.config(text="")
button3.config(text="")
button4.config(text="")
...
但它看起来真的是非语言的方式+在代码的其他部分上我需要一个动态的buttonX.config ......
有人知道我该怎么做?
答案 0 :(得分:1)
您可以简单地循环按钮(正如评论中已经指出的那样):
def reset():
for button in [button1, button2, ..., button9]:
button.config(text="")
如果可以,您可能希望直接创建按钮作为列表的一部分。这可能是也可能是不可能的。我的意思是:
buttons = [ttk.Button(root, text="bla"),
ttk.Button(root, text="bla"),
ttk.Button(root, text="bla"),
ttk.Button(root, text="bla"),
ttk.Button(root, text="bla"),
ttk.Button(root, text="bla"),
ttk.Button(root, text="bla"),
ttk.Button(root, text="bla"),
ttk.Button(root, text="bla")]
def reset():
for button in buttons:
button.config(text="")