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

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

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

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

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

1131閲覧

python3 tk 配置した画像をボタンにする

Untitled_Sample

総合スコア192

Python 3.x

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

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2019/07/13 18:11

編集2019/07/14 05:05

python3 tk 配置した画像をボタンにしたいが、
コマンドのつけ方が分かりません。
commandの追加方法など教えて下さい

現在のコード

python

1 2 3import tkinter 4 5# マップの描画 6def draw_map(): 7 for y in range(0, MAX_HEIGHT): 8 for x in range(0, MAX_WIDTH): 9 p = map_data[y][x] 10 canvas.create_image(x*64+30, y*64+30, image=images[p]) 11 12 13 14# ウィンドウ作成 15root = tkinter.Tk() 16root.title("パイソン") 17root.minsize(330, 330) 18 19# キャンバス作成 20canvas = tkinter.Canvas(width=330, height=330) 21canvas.place(x=5, y=5) 22 23 24 25# 画像データを読み込み 26images = [ 27tkinter.PhotoImage(file="image01.png"), 28tkinter.PhotoImage(file="image02.png"), 29tkinter.PhotoImage(file="image03.png"), 30tkinter.PhotoImage(file="image04.png"), 31tkinter.PhotoImage(file="image05.png") 32] 33 34# マップデータ 35MAX_WIDTH = 5 36MAX_HEIGHT = 5 37map_data = [ 38 [0, 1, 2, 3, 4], 39 [0, 1, 2, 3, 4], 40 [0, 1, 2, 3, 4], 41 [0, 1, 2, 3, 4], 42 [0, 1, 2, 3, 4], 43] 44 45 46 47draw_map() 48root.mainloop() 49

通常のボタン

python

1 2def push1(): 3 print('hello') 4 5Button01 = tk.Button(root, text='Button01' , command = push1) 6Button01.place() 7

失敗したコード冒頭

python

1 2def push1(): 3 print('hello') 4 5 6import tkinter 7 8# マップの描画 9def draw_map(): 10 for y in range(0, MAX_HEIGHT): 11 for x in range(0, MAX_WIDTH): 12 p = map_data[y][x] 13 canvas.create_image(x*64+30, y*64+30, image=images[p] 14 ,command=push1)

エラー
_tkinter.TclError: unknown option "-command"

#解糖を受けての追記

python

1def click(event): 2 print('Hello,World') 3 # クリックされた場所に描画する 4 5import tkinter 6 7# マップの描画 8def draw_map(): 9 for y in range(0, MAX_HEIGHT): 10 for x in range(0, MAX_WIDTH): 11 p = map_data[y][x] 12 canvas.create_image(x*64+30, y*64+30, image=images[p]) 13 #イベントを設定する 14 canvas.bind("<Button-1>", click) 15

上記のコードで実行を確認できました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

commandの指定ではなくbindでコールバックを設定してください。

クリックした場所に円を出すよ!イベントと関数の使い方をおぼえよう │ Pythonちゃんねる

投稿2019/07/13 18:15

hayataka2049

総合スコア30933

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問