実現したいこと
専門書にあったコードをかいてみたのですが、line 25, in <module>
‘‘‘‘root = tkinter.TK()
AttributeError: module 'tkinter' has no attribute 'TK'. Did you mean: 'Tk'?
となり、なぜAttributeErrorが発生したのか、そしてこのエラーに対する治し方は何なのかがずっとわかりませんでした。もしお気づきのことがあれば何でもおしえていただけますでしょうか?
該当のソースコード
‘‘‘ Python
import tkinter
key = " "
def key_down(e):
‘‘‘‘global key
key
1def key_up(e): 2‘‘‘‘global key 3‘‘‘‘ key= " " 4 5cx = 400 6cx= 300 7def main_proc( ): 8‘‘‘‘global cx, cy 9‘‘‘‘ if key == "Up": 10‘‘‘‘‘‘cy = cy - 20 11‘‘‘‘if key == " Down": 12‘‘‘‘‘‘cy = cy + 20 13‘‘‘‘if key == "Left": 14‘‘‘‘‘‘cx = cx - 20 15‘‘‘‘if key == "Right": 16‘‘‘‘‘‘cx = cx + 20 17‘‘‘‘canvas.coords("MYCHR", cx, cy) 18‘‘‘‘root,after(100,main_proc) 19 20root = tkinter.Tk() 21root.title("キャラクターの移動") 22root.bind("<KeyPress>", key_down) 23root.bind("<KeyRelease>", key_up) 24canvas = tkinter.Canvas(width=800, heigh=600, 25bg="lightgreen") 26canvas.pack( ) 27img = tkinter.PhotoIage(file="mimi.png") 28canvas.create_image(cx, cy, image=img, tag="MYCHR") 29main_proc() 30root.mainloop() 31 32‘‘‘ Python 33 34 35### 発生している問題・エラーメッセージ 36 37Traceback (most recent call last): 38 line 25, in <module> 39 root = tkinter.TK() 40AttributeError: module 'tkinter' has no attribute 'TK'. Did you mean: 'Tk'? 41 42### 他 43import tkinter 44key = " " 45def key_down(e): 46 global key 47 key = e.keysym 48def key_up(e): 49 global key 50 key= " " 51 52cx = 400 53cx= 300 54def main_proc( ): 55 global cx, cy 56 if key == "Up": 57 cy = cy - 20 58 if key == " Down": 59 cy = cy + 20 60 if key == "Left": 61 cx = cx - 20 62 if key == "Right": 63 cx = cx + 20 64 canvas.coords("MYCHR", cx, cy) 65 root,after(100,main_proc) 66 67root = tkinter.Tk() 68root.title("キャラクターの移動") 69root.bind("<KeyPress>", key_down) 70root.bind("<KeyRelease>", key_up) 71canvas = tkinter.Canvas(width=800, heigh=600, 72bg="lightgreen") 73canvas.pack( ) 74img = tkinter.PhotoIage(file="mimi.png") 75canvas.create_image(cx, cy, image=img, tag="MYCHR") 76main_proc() 77root.mainloop() 78 79### 補足 80こちらを実行したところ同じファイルにある画像が読み込まれない状態になりました。 81属性エラー: モジュール 'tkinter' には属性 'PhotoIage' がありません。「フォトイメージ」のことですか? 82と出るのですがそのフォトイメージを出してくれません
インデントが分かるようにコードは「コードの挿入」で記入してください。
> 専門書にあったコードをかいてみたのですが、
書籍名は何でしょうか?書籍通りに間違いなくコードを入力してエラーが出る場合は、出版社から正誤表は出ていませんか?
書籍名
「Pythonでつくる ゲーム開発 入門講座」
正誤表にはのっていないです。おそらく私のミスなのですがそのミスが何なのかわかりませんでした。
編集時にはしっかりとインデントが出ていましたが、編集を終了するとインデントが消えてしまっているようです。
申し訳ありません
治し方が分からず申し訳ありません
> AttributeError: module 'tkinter' has no attribute 'TK'. Did you mean: 'Tk'?
エラーメッセージにある通り、TK ではなく Tk です。
root = tkinter.Tk()
> 治し方が分からず申し訳ありません
「コードの挿入」で記入してください。ヘルプ(https://teratail.com/help#about-markdown や https://teratail.com/help/question-tips) を参照なさってください。
> 編集を終了するとインデントが消えて
pythonのコードの一番最初の行のすぐ上に
```python
だけの行を追加してください
また、pythonのコードの一番最後の行のすぐ下に
```
だけの行を追加してください
または、
https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif
を見て、そのようにしてみてください
PhotoIage ではなく PhotImage です。(m が抜けている)
img = tkinter.PhotoIage(file="mimi.png")
=>
img = tkinter.PhotoImage(file="mimi.png")
それから、
cx = 400
cx= 300
となっていて cx が再定義されていますが、これは
cx = 400
cy = 300
とするべきかと。(後方で cy が使用されているので)
また、
root,after(100,main_proc)
となっていますが、root,after ではなく、root.after です。(カンマではなくドット)
root.after(100,main_proc)
jbpb0さま
ご回答とても助かりました
打ち間違いの多さに気づかなかったのが悔しくおもいます
おっしゃる通り治したところフォトイメージが出てきてくれたのでうまくさどうしているようです
まだ下方向へ動いていないのですがここは自力で解決してみます
回答欄ではないのでベストアンサーにさせていただけないのが残念ですがjbpb0 さまのおかげでコードのバグリを治せたことに再度感謝しております
周りの皆様のごかいとうにもかんしゃします
> jbpb0さま
ご回答とても助かりました
私のではなくて、melianさんのコメントのことですかね

回答2件
あなたの回答
tips
プレビュー