【发布时间】:2021-05-12 14:46:44
【问题描述】:
我正在开发一个关于室内植物的 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 循环有关。
【问题讨论】:
-
“不起作用”是什么意思?另外,这是否回答了您的问题:stackoverflow.com/q/17677649/7432
-
我刚刚发现:stackoverflow.com/questions/21738149/… 回答了我的大部分问题,但我想使用 .grid 而不是 .pack
-
我也收到此错误:“TypeError: 'type' object is not subscriptable” 这就是我所说的不起作用。
-
我不知道怎么做,所以每个按钮都在不同的行
-
该错误是因为
tk.Button是一种类型(类),而您正在尝试执行tk.Button[i]。这有点像int[i]或str[i]。
标签: python python-3.x sqlite tkinter