python tkinterでボタンを押すと表示された画像が別の画像に切り替わるプログラムの作成
解決済
回答 2
投稿
- 評価
- クリップ 1
- VIEW 6,643
tkinterを用いてGUI上でボタンと画像Aがあり、ボタンを押すと画像Aから画像Bに切り替わるようなプログラムの作成を行いたいと思っています。
tkinterを使い始めたばかりでそこまで理解ができていないのですが、ボタンがあるGUI上に画像を表示させることができないです。
以下のコードに付け加えて教えていただけるとありがたいです。
コード
import sys
import tkinter as tk
root = tk.Tk()
# ウインドウのタイトルを定義する
root.title(u'タイトル')
# ここでウインドウサイズを定義する
root.geometry('1000x600')
# Buttonを設置してみる
Button1 = tk.Button(text=u'画像切り替え')
Button1.pack()
root.mainloop()
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
参考:tkinterのlabelに貼り付けた画像を消す方法。
import sys
import tkinter
root = tkinter.Tk()
# タイトル
root.title('タイトル')
# ウインドウサイズ
root.geometry('250x250')
# 画像の取得
img1 = tkinter.PhotoImage(file = r'C:\workspace\tmp\pic\test001.png')
img2 = tkinter.PhotoImage(file = r'C:\workspace\tmp\pic\test002.png')
# 画像切替
def push1():
label1.configure(image=img1)
label2.configure(image='')
def push2():
label1.configure(image='')
label2.configure(image=img2)
# ボタン
Button1 = tkinter.Button(text = '画像1' , command = push1)
Button1.grid(row = 1, column = 0)
Button2 = tkinter.Button(text = '画像2' , command = push2)
Button2.grid(row = 1, column = 1)
# ラベル
label1 = tkinter.Label(root,image=img1)
label1.grid(row = 0, column = 0)
label2 = tkinter.Label(root)
label2.grid(row = 0, column = 0)
# ループ
root.mainloop()
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
-4
試してみた。なかなか面白いですね。
import tkinter as tk
from PIL import Image, ImageTk
class Frame(tk.Frame):
img1=None
img2=None
def __init__(self, master=None, title=None, width=100, height=100):
tk.Frame.__init__(self, master, height=height, width=width)
if title is not None:
self.master.title(title)
def photoImage(f):
img = Image.open(f)
if img.mode == 'P':
img = img.convert('RGB')
img = img.resize((80,80))
photo = ImageTk.PhotoImage(img)
return photo
# 画像の取得
self.img1 = photoImage(r'../resource/heart_16.png')
self.img2 = photoImage(r'../resource/map-marker_16.png')
self.set_button()
self.set_label()
def set_button(self):
# ボタン
quit=tk.Button(self, text='quit', bg='gray', command=self.master.destroy)
quit.grid(row=0, column=0)
btn1 = tk.Button(self, text='画像1', command=lambda: self.push(self.img1))
btn1.grid(row=0, column=1)
btn2 = tk.Button(self, text='画像2', command=lambda: self.push(self.img2))
btn2.grid(row=0, column=2)
def set_label(self):
# ラベル
l1 = tk.Label(self, image=self.img1, bg="linen")
l1.image = self.img1
l1.grid(row=1, column=1)
self.label1 = l1
# 画像切替
def push(self, img):
self.label1.configure(image=img)
if __name__ == "__main__":
frm = Frame(title='test', width=200, height=200)
frm.pack()
# ループ
frm.mainloop()
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2018/10/10 01:34
とてもシンプルで分かりやすいプログラムでいした!