Доступ к информации о виджете ввода: tkinter python - PullRequest
0 голосов
/ 29 июня 2011

Я пишу программу Tkinter и имею рут, где рядом с виджетами ввода отображаются метки.

EX: Имя -> SearchTerm ENTRY BOX

Я пытаюсь создать списокзначений из вступительных слов (EX: ['', 'пользовательский ввод', 'пользовательский ввод'])

Я создал виджеты ввода в корне и затем получил функцию, которая получает значения:

def get_user_entries(user_entries):

    new_search_terms = []

    for entry in user_entries:
        new_search_terms.append(entry.get())
    return new_search_terms

Я хочу иметь доступ к списку new_search_terms для запуска другой программы на python.

Я попытался использовать функцию в качестве команды для кнопки.Я пытался связать кнопку в разных местах.Я пытался вызвать кнопку в разных местах.Я также попытался создать класс, где я new_search_terms был переменной класса, но так как я не могу получить доступ к возвращенной информации из функции выше, обновленная переменная класса не сохранялась.После исчерпания интернета и нескольких книг мне еще предстоит найти пример, где информация возвращается из функции Button, а не печатается.Мне нужно иметь доступ к этой информации в другом месте.

Есть ли способ получить нужную мне информацию или есть другой подход к этому в Tkinter, о котором я не задумывался?

Код, где я создаю кнопку:

done = Button(root, text='Done', command= lambda: get_user_entries(user_entries))
done.pack()

Вот код, который создал записи и метки:

def uc_1(original_names, final_names, root):
   user_entries = []
   for index in range(len(original_names)):
      row = Frame(root)
      info = Label(row, text = original_names[index]+'->'+final_names[index])
      user_entry = Entry(row)
      row.pack(side=TOP, fill=X)
      user_entry.pack(side=RIGHT, expand=YES, fill=X)
      user_entries.append(user_entry)
      info.pack(side=LEFT)
   return user_entries 

Спасибо!

1 Ответ

0 голосов
/ 29 июня 2011

Команды кнопок не «возвращаются». Они это делают, но возвращаются в цикл обработки событий, поэтому нет ничего, что могло бы обработать возвращаемое.

При этом трудно понять, о чем вы спрашиваете. Вы говорите: «Я не могу получить доступ к возвращенной информации из функции», но не вижу причин, почему нет. Если вы вызываете его, не возвращает ли он то, что возвращает оператор return? Это кажется совершенно невозможным.

Если вы сконфигурируете кнопку для запуска self.OnButton и определите self.OnButton для вызова вашей функции get_user_entries, что произойдет? Это ничего не возвращает?

Посмотрите на это так: ваша функция кнопки не должна возвращать что-то, она должна делать что-то. Это можно сделать, вызвав вашу функцию, получить то, что она возвращает, затем вызвать все, что вы хотите, чтобы она вызывала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...