У меня проблема с использованием tkinter с while l oop в python. У меня есть список вопросов и ответов python (учащиеся должны угадать противоположное слову, показанному в вопросе). После угадывания нажатие кнопки «Показать» покажет ответ. Код работает нормально, но когда я пытаюсь создать GUI с помощью tkinter, я получаю сообщение об ошибке с указанием индекса вне списка. Без GUI я использую while l oop, чтобы эта проблема никогда не возникала. Код был следующим:
from tkinter import *
root=Tk()
list1=["big","Close","Difficult","Full"]
list2=["Small","Open","Easy","Empty"]
y=len(list1)
def show_answer():
Label2 = Label(root, text=list2[x])
Label2.pack()
Btn2 = Button(root, text="Next")
Btn2.pack()
Btn2.wait_variable(root)
def Question():
Label1 = Label(root, text=list1[x])
Label1.pack()
Btn1 = Button(root, text="Show Answer",command=show_answer)
Btn1.pack()
Btn1.wait_variable(root)
x=0
while x<y:
Question()
x=x+1
root.mainloop()
С этим кодом после def show_answer()
он не возвращается обратно к while l oop. Таким образом, событие останавливается с заданием только одного вопроса. чтобы преодолеть это, я использовал новую функцию для Btn2
в def show_answer
, где значение x увеличивается (x = x + 1) и вызывается Question()
. код выглядит следующим образом:
from tkinter import *
root=Tk()
list1=["big","Close","Difficult","Full"]
list2=["Small","Open","Easy","Empty"]
y=len(list1)
print(y)
def next():
global x
x=x+1
Label1.destroy()
Label2.destroy()
Btn1.destroy()
Btn2.destroy()
Question()
def show_answer():
global Label2
global Btn2
Label2 = Label(root, text=list2[x])
Label2.pack()
Btn2 = Button(root, text="Next",command=next)
Btn2.pack()
Btn2.wait_variable(root)
def Question():
global Label1
global Btn1
Label1 = Label(root, text=list1[x])
Label1.pack()
Btn1 = Button(root, text="Show Answer",command=show_answer)
Btn1.pack()
Btn1.wait_variable(root)
x=0
while x<y:
Question()
x=x+1
root.mainloop()
Единственная проблема - index out of list error
. Как заставить while loop
работать, чтобы избежать ошибки индекса вне диапазона в этом сценарии?