前提・実現したいこと
独学で学んだpythonでtkinterを使ってタイピングのゲームを作っています。
Press_Key関数でキー入力のキーコードをkeycに代入し、
questionを一文字ずつの文字列のリストにしたquestion_spritと照らし合わせながらあっていたら文字をanserに足すというものを繰り返したいです。
発生している問題・エラーメッセージ
AttributeError: 'str' object has no attribute '_root'
該当のソースコード
python
1import tkinter as tk 2 3# 関数 4def Press_Key(event): 5 global keyc 6 keyc=event.keysym 7 8 9def Q(): 10 global anser, n, keyc 11 question_sprit=list(question.get()) 12 if question_sprit[n]==keyc: 13 question_sprit=list(question.get()) 14 new_anser=anser.get() 15 new_anser+=keyc 16 anser.set(new_anser) 17 n+=1 18 19 20# ウィンドウ 21root = tk.Tk() 22root.geometry('300x200') 23root.title('Game_Typing') 24root.bind('<KeyPress>', Press_Key) 25root.focus_set() 26 27# 変数 28keyc="" 29n = 0 30anser=tk.StringVar("") 31question=tk.StringVar("apple") 32 33# ウィジェット 34t=tk.Label(root, text='Game_typing', font=("MSゴシック", "100")).pack(pady=(0, 60)) 35 36q=tk.Label(root, textvariable=question, font=("MSゴシック", "60")).pack(pady=(0, 60)) 37 38a=tk.Label(root, textvariable=anser, font=("MSゴシック", "40")).pack(pady=(0, 60)) 39 40Q() 41 42root.mainloop()
試したこと
StringVarに関してのエラーだと思ってStringVarの anser, questionをgetを使用して扱うようにしたり、関数内でglobalの宣言を使用する変数にも取り出す変数にもしたこと
(基本すらなっていないtkinterやStringVarについて学びたいのですが、サイトや本が少なくてどうすればいいのかわかりませんでした。もしtkinterでおすすめの書籍やサイトがありましたら教えてくださいますと嬉しいです!)
補足情報(FW/ツールのバージョンなど)
Windows ×64のバージョン1.63.2のvs Codeです
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/24 14:15