使用for循环对多个变量执行方法

时间:2016-12-07 23:04:40

标签: python python-3.x for-loop tkinter

我有一个具有相似名称的多重变量(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 ......

有人知道我该怎么做?

1 个答案:

答案 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="")