如何使用 for 循环为列表中的每个项目创建按钮?

时间:2021-02-08 23:52:38

标签: python python-3.x sqlite tkinter

我正在开发一个关于室内植物的 python 应用程序,我正在使用 tkinter。我有一个植物列表,它们都具有特定属性(在这种情况下,它是植物“叶子”的类型),使用 sqlite 从数据库中调用。我想使用 for 循环为列表中的每个项目创建一个按钮,并将每个按钮放在不同的行上,并将每个按钮的文本设为不同的项目。我想使用 for 循环,以便在将植物添加到数据库(以及列表)时,我不必每次都更改代码。

foliage_list = []
c.execute("SELECT name FROM plants WHERE type_of_plant = 'foliage'")
foliage_result = c.fetchall()
foliage_list.append(foliage_result)
foliage_num = len(foliage_list)

for item in foliage_list:
    for i in range(foliage_num):
        tk.Button(self, text=item)
        tk.Button[i].grid(row=i+1, column=0, padx=30, pady=30)

这里我创建了列表,然后尝试使用 for 循环为列表中的每个项目创建一个按钮。我知道这是错误的(它不起作用)但我不知道如何使它起作用。我该怎么做?

编辑: 我已将代码更改为:

for item in foliage_list:
    for i in range(foliage_num):
        tk.Button(self, text=item).grid(row=i+1, column=0, padx=30, pady=30)

我现在似乎为每一行列表中的每个项目创建一个按钮,以显示项目的数量。我认为这与使用嵌套 for 循环有关。

1 个答案:

答案 0 :(得分:-1)

这是错误的:

tk.Button(self, text=item)
tk.Button[i].grid(row=i+1, column=0, padx=30, pady=30)

使用:

tk.Button(self, text=item).grid(row=i+1, column=0, padx=30, pady=30)