#python #list #tkinter
#python #Список #tkinter
Вопрос:
Я пытаюсь найти способ сравнить вводимые пользователями данные с массивом. Если пользовательский ввод уникален и не соответствует ни одному из элементов в списке, он должен добавить ввод в список. Все мои методы пока не работали. Ниже приведен мой последний
def input_stub():
global player_num
global name_entry
global display_num
if player_num != t1_amount: ##t1_amount is the amount of elements the user wants in the list
t1_input = Toplevel(master)
final_confirm.withdraw()
title = Label(t1_input, text = "Team 1 Input").grid(row = 0, column = 1)
request = Label(t1_input, text = "Please enter player " str(display_num) " name").grid(row = 1, column = 1)
name_entry = Entry(t1_input)
name_entry.grid(row = 2, column = 1)
display_num = display_num 1
valid_button = Button(t1_input, text = "Submit", command = lambda: player_valid()).grid(row = 4, column = 1)
def player_valid(): ##THIS IS WHERE USER INPUT NEEDS TO BE COMPARED
elem = len(team_1_array)
for i in range(0, elem):
p = None
while not p or p in team_1_array:
p = name_entry.get()
if p in team_1_array:
error = Label(t1_input, text = "Error").grid(row = 3, column = 1)
else:
player_num = player_num 1
t1_validation(team_1_array) ##IF IT PASSES, IT MOVES ON TO BEING PUT ONTO THE END OF THE LIST
def t1_validation(current_team):
global player_num
global display_num
global team_1_array
global t1_confirm
current_player_trans = p
current_team.append(current_player_trans)
if player_num != t1_amount:
t1_input.destroy()
input_stub()
elif player_num == t1_amount: ##THIS DISPLAYES THE LIST ONCE THE SELECTED AMOUNT OF ELEMENTS ARE IN THE ARRAY
t1_confirm = Toplevel(master)
t1_input.withdraw()
t1_confirm.geometry("200x200")
player_count = 1
for i in range(len(team_1_array)):
exec('Label%d=Label(t1_confirm,text="%s")nLabel%d.pack()' % (i, "Player " str(player_count) " : " team_1_array[i], i))
player_count = player_count 1
confirm_button = Button(t1_confirm, text = "Confirm Team 1", command = lambda: input_stub_2()).pack()
Любая помощь будет оценена
Комментарии:
1. Как вы думаете, почему это не работает? Что делает код, который не соответствует вашим ожиданиям?
2. @BryanOakley Программа не переходит к следующему окну ввода, как только я нажимаю valid_button. Он либо остается там, либо вылетает
3. Что вы сделали для отладки этого? Вы убедились, что ваша функция вызывается? Вы проверили
p=name_entry.get()
, возвращает ли это то, что вы ожидаете? Что еще вы пытались сделать?4. @BryanOakley он сохранил запись в P, но кнопка отправки
valid_button
даже сейчас ничего не делает, я добавил флаг нижеdef player_valid()
, и он отключился5. Поместите
print()
одну другую строку и попытайтесь выяснить, какие строки печатаются и где код прерывается.