如何从tkinter条目生成另一个函数的位置参数

时间:2019-07-04 12:34:18

标签: python sqlite tkinter

这里是初学者。我试图做一个gui形式,将数据收集到sql数据库中,并同时在树视图中显示它。

def adddata():
    backend2.adddata(food.get(), transport.get(), insurance.get(), installments.get(), others.get())

对于示例,您可以看到我有5个输入字段,我需要从这些字段中获取数据并使用adddata函数将其传递到数据库中。想象一下,如果我必须再添加5个字段,而我又有10个类似的函数,将它们手动添加到代码中将很繁琐。

因此,有一种方法可以生成位置参数列表以传递给backend.adddata2()函数吗?谢谢。

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

它分开了获取数据和存储数据的责任。当您有更多数据字段需要收集和存储时,只有get_data才需要更新。

def get_data():
    food_ = food.get()
    transport_ = transport.get()
    insurance_ = insurance.get()
    installments_ = installments.get()
    others_ = others.get()
    return food_, transport_, insurance_, installments_, others_

def adddata():
    data = get_data()
    backend2.adddata(*data)

答案 1 :(得分:0)

通常,我首先会创建一个条目字段名称的列表,然后使用for循环来创建条目并将其存储在另一个列表中。这给您带来的好处是,如果您需要创建其他条目,只需要将名称添加到初始列表中即可。

import tkinter as tk

root = tk.Tk()
entry_holder = []
info = ["food","transport","insurance","installments","others"]

for i in info:
    a = tk.Entry(root)
    a.insert(0,f"{i} test data")
    a.pack()
    entry_holder.append(a)

def adddata():
    results = [i.get() for i in entry_holder]
    print (results)
    #backend2.adddata(*results)

tk.Button(root,text="Send data",command=adddata).pack()

root.mainloop()