Хотя l oop в python с использованием tkinter GUI - PullRequest
0 голосов
/ 14 июля 2020

У меня проблема с использованием 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 работать, чтобы избежать ошибки индекса вне диапазона в этом сценарии?

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