背景情報以下PythonのTkinterの - ループ
前に実行ウィンドウは、私は現在、基本的に単語を出力するプログラムを作成するために働いているコードであり、かつ正確に単語のスペルをお願いします。一度使用されるとusedWords辞書に入れられて再利用されないので、単語は一度だけ印刷できます。すべての単語が使い尽くされると、whileループが終了します。これは完全に機能しますが、今はGUIと統合しようとしています。
特に何私の問題は、問題
であることは、私はTkinterのウィンドウがラベルを持っている、とラベルの更新プログラムを新しい単語がプリントアウトされるたびに持っていたいということです。しかし、現在エラーが発生しています AttributeError: 'NoneType'オブジェクトに '_root'属性がありません メインウィンドウを定義する前にラベルを追加しようとしたため、これが起こっていると思います。ループが終了する前にウィンドウが開いていないループの前にウィンドウが定義されている場合は、これは他の方法で行います。これは明らかに私が実際にやりたいことに反するものです。私はこの作品を作るのですかどのように私の質問
それはthis-と同じくらい簡単ですがsaid-そのすべてで
?私は、ループの前にウィンドウを作成したい、とウィンドウ更新内のラベルを持つ新しい単語がリストから
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")
ありがとう、これは完璧です。私がしたいことのための良い出発点。私のエッセイを読む時間をとってくれてありがとう。 1つの質問、私はクラスに新しくて素朴です - これで使ったクラス関連の関数をすべて説明するクラスを知っていますか? super().__ init __()など – Csarg
また、あなたが設定したself._buttonの代わりにRETURNボタンを持つためにbind関数を使う方法はありますか? – Csarg
[クラスのためのPythonドキュメント]を見てくださいhttps://docs.python.org/3.6/tutorial/classes.html)を参照してください。"スーパー"は親クラスのメソッドを呼び出す方法であり、もう少し説明されています(https://docs.python.org/3.6/library/functions.html#super)。 補足として、無料の[電子ブックfrom Python](https://www.packtpub.com/tech/python) –