如何在循环中创建多个具有不同名称的 tkinter 小部件?

Posted

技术标签:

【中文标题】如何在循环中创建多个具有不同名称的 tkinter 小部件?【英文标题】:How can I create multiple tkinter widgets with different names in a loop? 【发布时间】:2015-01-19 22:29:47 【问题描述】:

我应该能够使用循环来执行以下操作,而不是写出比我需要的更多的小部件并缩短我的代码。这就是我现在这样做的方式:

db = sqlite3.connect('/path/to/database')
cursor = db.cursor()
cursor.execute("SELECT Drug FROM database where current >= 1")
allrec = cursor.fetchall()
numrec = len(allrec)
cursor.execute("SELECT Drug FROM database where current >= 1")
results = cursor.fetchone()
if numrec == 0:
    exit
else:
    c1=Checkbutton(frame1,variable=var1)
    c1.grid(row=0,column=0,sticky='nw')
    c1.config(bg='black')
    e1=Entry(frame1, bg="black", fg="white")
    e1.grid(row=0, column=1, sticky=NW)
    e1.delete(0, END)
    for row in results:
        e1.insert(END, *results)
results = cursor.fetchone()
if numrec <= 1:
    quit
else:
    c2=Checkbutton(frame1,variable=var2)
    c2.grid(row=1,column=0,sticky='nw')
    c2.config(bg='black')
    e2=Entry(frame1, bg="black", fg="white")
    e2.grid(row=1, column=1, sticky=NW)
    e2.delete(0, END)
    for row in results:
        e2.insert(END, *results)

    record 3 ........
    record 4 ........
    .......
    .......
    record 15 .......

这将创建 15 个具有不同名称的复选框和输入框,以便我可以插入数据库中的记录。

【问题讨论】:

使用列表,然后使用record[0] 等访问。 【参考方案1】:

创建一个包含所有复选按钮的列表,而不是拥有 15 个名为 c1c2...c15 的变量。对您的条目和变量执行相同的操作。

checkbuttons = []
entries = []
vars = []
for i in range(numrec):
    results = cursor.fetchone()
    var = IntVar()
    check_button=Checkbutton(frame1,variable=var)
    check_button.grid(row=i,column=0,sticky='nw')
    check_button.config(bg='black')
    entry=Entry(frame1, bg="black", fg="white")
    entry.grid(row=i, column=1, sticky=NW)
    entry.delete(0, END)
    for row in results:
        entry.insert(END, *results)
    checkbuttons.append(check_button)
    entries.append(entry)
    vars.append(var)

现在而不是得到例如第六个条目是e6,你会得到它是entries[5]

【讨论】:

我不确定如何从列表中获取。我得到的只是一个长十进制数 从列表中获取什么? 在上面的例子中如何获取输入框中的文本? entries[whatever].get()

以上是关于如何在循环中创建多个具有不同名称的 tkinter 小部件?的主要内容,如果未能解决你的问题,请参考以下文章

使用不同的命令创建多个Tkinter按钮但外部变量[重复]

如何保存来自 python 循环的不同名称的多个绘图? [复制]

如何从 for 循环返回多个具有唯一名称的 pandas 数据帧?

如何在循环中的每次迭代中保存具有不同名称的文件? MATLAB

在具有不同变量名称的循环中保存

特金特。创建具有“不同”命令功能的多个按钮