teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

4082閲覧

属性エラー: モジュール 'tkinter' には属性 'TK' がありません。「Tk」? と出る症状について

Ryoruri

総合スコア3

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/06/17 16:12

編集2023/06/18 06:25

0

0

実現したいこと

専門書にあったコードをかいてみたのですが、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と出るのですがそのフォトイメージを出してくれません

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2023/06/17 16:43

インデントが分かるようにコードは「コードの挿入」で記入してください。 > 専門書にあったコードをかいてみたのですが、 書籍名は何でしょうか?書籍通りに間違いなくコードを入力してエラーが出る場合は、出版社から正誤表は出ていませんか?
Ryoruri

2023/06/17 17:00

書籍名  「Pythonでつくる ゲーム開発 入門講座」  正誤表にはのっていないです。おそらく私のミスなのですがそのミスが何なのかわかりませんでした。
Ryoruri

2023/06/17 17:08

編集時にはしっかりとインデントが出ていましたが、編集を終了するとインデントが消えてしまっているようです。 申し訳ありません 治し方が分からず申し訳ありません
melian

2023/06/17 17:12

> AttributeError: module 'tkinter' has no attribute 'TK'. Did you mean: 'Tk'? エラーメッセージにある通り、TK ではなく Tk です。 root = tkinter.Tk()
jbpb0

2023/06/17 22:37

> 編集を終了するとインデントが消えて pythonのコードの一番最初の行のすぐ上に ```python だけの行を追加してください また、pythonのコードの一番最後の行のすぐ下に ``` だけの行を追加してください または、 https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif を見て、そのようにしてみてください
melian

2023/06/18 06:38

PhotoIage ではなく PhotImage です。(m が抜けている) img = tkinter.PhotoIage(file="mimi.png") => img = tkinter.PhotoImage(file="mimi.png")
melian

2023/06/18 06:44

それから、 cx = 400 cx= 300 となっていて cx が再定義されていますが、これは cx = 400 cy = 300 とするべきかと。(後方で cy が使用されているので) また、 root,after(100,main_proc) となっていますが、root,after ではなく、root.after です。(カンマではなくドット) root.after(100,main_proc)
Ryoruri

2023/06/18 13:14

jbpb0さま ご回答とても助かりました 打ち間違いの多さに気づかなかったのが悔しくおもいます おっしゃる通り治したところフォトイメージが出てきてくれたのでうまくさどうしているようです まだ下方向へ動いていないのですがここは自力で解決してみます 回答欄ではないのでベストアンサーにさせていただけないのが残念ですがjbpb0 さまのおかげでコードのバグリを治せたことに再度感謝しております 周りの皆様のごかいとうにもかんしゃします
jbpb0

2023/06/18 15:03 編集

> jbpb0さま ご回答とても助かりました 私のではなくて、melianさんのコメントのことですかね
guest

回答2

0

なぜAttributeErrorが発生したのか
そのAttributeが(少なくとも使用されているバージョンにおいては)存在しないからです。

そしてこのエラーに対する治し方は何なのかがずっとわかりませんでした。
ドキュメントを確認しましょう。下記によるとtkinter.TKではなくtkinter.Tkです。
class tkinter.Tk

投稿2023/06/18 02:09

meg_

総合スコア10950

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ryoruri

2023/06/18 06:27

教えていただいてありがとうございます その通りに直したのですが 次はフォトイメージが出なくなる症状が発生してしまいました
meg_

2023/06/18 08:44

追加の課題(問題)については新しく質問を建てるべきかと思います。今回は解決済かもしれませんので、次回質問される機会がありましたらそのようにされると良いかと思います。
Ryoruri

2023/06/18 13:16

はい ここからは自力でバグを治したいと思います ご回答ありがとうございました。
guest

0

ベストアンサー

google翻訳
属性エラー: モジュール 'tkinter' には属性 'TK' がありません。もしかして:「Tk」って?

ちゃんと解答書いてくれてますよ
Kを小文字にしましょう

投稿2023/06/17 21:03

y_waiwai

総合スコア88173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ryoruri

2023/06/18 06:29

教えていただいてありがとうございます TKが正しいのだと勘違いをしておりました その通りに直したのですが 次はフォトイメージが出なくなる症状が発生してしまいました
y_waiwai

2023/06/18 08:09

あなたが提示したエラーは修正されたので、 また別のバグが出てきたってはなしですね、がんばってデバッグ、修正しよう
Ryoruri

2023/06/18 13:20

はい! 今回はy_waiwai様のおかげでエラーに気づくことができました とても嬉しいです この先のデバッグは自力で修正してみたいと思います y_waiwai さま この度はありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問