Справочная информация
Ниже приведен код, над которым я сейчас работаю, чтобы создать программу, которая по существу печатает слово и просит вас правильно написать слово. Слово может быть напечатано только один раз, так как после его использования оно помещается в словарь usedWords, чтобы его нельзя было использовать повторно. Когда все слова будут израсходованы, цикл while завершается. Все это прекрасно работает, однако теперь я пытаюсь интегрировать это с графическим интерфейсом.
В чем конкретно моя проблема
Проблема в том, что я хотел бы, чтобы окно Tkinter имело метку и обновляло метку каждый раз, когда печатается новое слово. Однако в настоящее время я получаю сообщение об ошибке AttributeError: объект «NoneType» не имеет атрибута «_root». Я полагаю, что это происходит, потому что я пытался добавить метку до определения определения главного окна, но я не могут сделать это каким-либо другим способом, если окно определено до цикла, окно не открывается до завершения цикла, что, очевидно, противоречит тому, что я хочу на самом деле сделать.
После всего сказанного – мой вопрос
Это так просто - как мне заставить это работать? Я хочу создать окно перед циклом и обновлять метку в окне каждый раз, когда новое слово выбирается из списка.
import random
import time
from tkinter import *
from tkinter.messagebox import *
words = ['reflection', 'attitude', 'replicate', 'accomodate', 'terrain',
'arguemental', 'stipulate', 'stimulation', 'latitude', 'marginal',
'thedubester', 'security', 'documentation', 'ukulele',
'terminal', 'exaggeration', 'declaration', 'apptitude', 'absence',
'aggressive', 'acceptable', ' allegiance', 'embarass', 'hierarchy',
'humorous', 'existence']
usedWords = []
while len(usedWords) < len(words):
chooseWord = words[random.randrange(len(words))]
var = StringVar()
display = Label(textvariable = var)
display.place(x=1,y=1)
if chooseWord not in usedWords:
var.set(chooseWord)
userSpelt = input("Spelling: ")
usedWords.append(chooseWord)
if userSpelt in words:
print("Correctly spelt!")
else:
print("Incorrectly spelt!")
master = Tk()
master.geometry("500x600")
master.title("Minesweeper V 1.0")
master.configure(background="#2c3e50")