Как я могу получить информацию от нескольких виджетов, созданных в al oop? - PullRequest
0 голосов
/ 18 февраля 2020

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

import tkinter as tk
from tkinter import ttk
window = tk.Tk()
my_list = []

def get_info():
    for each_player in my_list:
        tk.Label(window, text=temp_entry.get()).grid()

#number of players is determined by the user.
#In this example, lets say there are 3 players
tk.Label(window, text="Number of Players: ").grid()
num_of_players = ttk.Combobox(window, values=[1, 2, 3])
num_of_players.current(2)
num_of_players.grid(row=0, column=1)
#The code above is only the recreate the user selecting the amount of players from a combobox


#create number of entry boxes for user-determined number of players
for each_player in range(1, int(num_of_players.get()) + 1):
    temp_label = tk.Label(window, text="Player {}: ".format(each_player))
    temp_entry = tk.Entry(window)
    my_list.append(temp_entry)

    temp_label.grid(row=each_player, column=0, pady=10)
    temp_entry.grid(row=each_player, column=1, pady=10)
button = tk.Button(window, text="Save", command=get_info)
button.grid()

window.mainloop()

Это на конце кода, где я пытаюсь выяснить, как я могу получить информацию из полей ввода. Как я могу использовать метод get (), но только после ввода текста пользователем?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Используйте кнопку, которая вызывает метод, который получает текст для вас, как:

play = Button(window, text="get_button", command=that_getter_method)
.....
.....
def that_getter_method():
    var = field.get()
0 голосов
/ 18 февраля 2020

Ваш список содержит виджеты ввода, поэтому в вашем l oop вам нужно ссылаться на переменную l oop вместо temp_entry:

def get_info():
    for each_player in my_list:
        print(each_player.get())
...