Я пытаюсь создать графический интерфейс с помощью tkinter
. Это мой код:Ярлык не обновляется
from tkinter import *
from random import randint
B3Questions = ["How is a cactus adapted to a desert environment?", "What factors could cause a species to become extinct?"]
B3Answers = ["It has leaves reduced to spines to cut water loss, a thick outer layer to cut down water loss and a deep-wide spreading root system to obtain as much water as possible", "Increased competition, new predators and new diseases"]
B3Possibles = [x for x in range (len(B3Questions))]
def loadGUI():
root = Tk() #Blank Window
questNum = generateAndCheck()
questionToPrint = StringVar()
answer = StringVar()
def showQuestion():
questionToPrint.set(B3Questions[questNum])
def showAnswer():
answer.set(B3Answers[questNum])
def reloadGUI():
global questNum
questNum = generateAndCheck()
return questNum
question = Label(root, textvariable = questionToPrint)
question.pack()
answerLabel = Label(root, textvariable = answer, wraplength = 400)
answerLabel.pack()
bottomFrame = Frame(root)
bottomFrame.pack()
revealAnswer = Button(bottomFrame, text="Reveal Answer", command=showAnswer)
revealAnswer.pack(side=LEFT)
nextQuestion = Button(bottomFrame, text="Next Question", command=reloadGUI)
nextQuestion.pack(side=LEFT)
showQuestion()
root.mainloop()
def generateAndCheck():
questNum = randint(0, 1)
print(questNum)
if questNum not in B3Possibles:
generateAndCheck()
else:
B3Possibles.remove(questNum)
return questNum
В принципе, при нажатии «Следующий вопрос» метка вопроса не обновляется. Повторное нажатие «Следующий вопрос» переведет код в хороший цикл ошибок.
Я честно не могу видеть, куда я иду неправильно, но это, вероятно, из-за моего отсутствия опыта
Вы на самом деле не обновляет содержимое '' StringVar' questionToPrint' при вызове 'reloadGUI()'. – RobertR
Как мне это сделать? –
Ошибка, которую вы получаете после нажатия Next Question во второй раз, состоит в том, что в вашем списке номеров ничего нет. Поэтому ваша функция 'reloadGUI' будет продолжать работать до тех пор, пока вы не нажмете рекурсивный предел Python. – Dzhao