Как сгенерировать позиционные аргументы для другой функции из записи tkinter - PullRequest
2 голосов
/ 04 июля 2019

начинающий кодер здесь.Я пытаюсь создать форму графического интерфейса пользователя, которая собирает данные в базу данных SQL и одновременно отображает их в виде дерева.

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

Например, вы можете видеть, что у меня есть 5 полей ввода, из которых мне нужно получить данные и передать их в базу данных с помощью функции adddata.Представьте себе, если мне нужно добавить еще 5 полей, и у меня есть 10 подобных функций, было бы утомительно добавлять их в код вручную.

Следовательно, есть ли способ генерировать список позиционных аргументов для передачи в функцию backend.adddata2 ()?Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Обычно я сначала создаю список имен полей ввода, а затем использую цикл 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()
0 голосов
/ 04 июля 2019

Вы можете сделать что-то вроде этого:

Это разделяет заботу о получении данных и ответственность за их хранение.Если у вас есть больше полей данных для сбора и хранения, только 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...