Python
 Computer >> コンピューター >  >> プログラミング >> Python

Tkinterで1つのボタンに画像とテキストを同時に表示する方法

Tkinterアプリケーションでは、PhotoImage(画像のパス)関数を使用して画像を読み込むことができます。この関数は画像の場所を引数として受け取り、ウィンドウオブジェクト上に画像を表示します。しかし、単純にボタンへ画像を追加すると、画像が表示される一方でボタンのテキストが隠れてしまうという問題があります。

そこで、ボタンのテキストと画像を両方表示させ、それぞれの位置関係を制御するために使用するのがcompoundプロパティです。このプロパティにはLEFT(左)、RIGHT(右)、TOP(上)、BOTTOM(下)の4つの位置指定を渡すことができ、それぞれボタン上における画像の配置位置を定義します。

サンプルコード

以下の例では、compoundプロパティを使って画像をボタンのテキストに対して左側に配置しています。

# tkinterライブラリをインポート
from tkinter import *
from PIL import Image, ImageTk

# Tkinterフレーム(ウィンドウ)のインスタンスを作成
win = Tk()

# ウィンドウのサイズを設定
win.geometry("750x250")

# ウィンドウを閉じるための関数を定義
def close_win():
    win.destroy()

# 画像を読み込む
image = Image.open('preview.png')

# 画像をリサイズ
image = image.resize((50, 50), Image.ANTIALIAS)

# 画像をPhotoImageオブジェクトに変換
img = ImageTk.PhotoImage(image)

# 説明用のラベルを作成
Label(win, text="下のボタンをクリックするとウィンドウが閉じます", font=('Aerial 15 bold')).pack(pady=20)

# 画像とテキストを組み合わせたボタンを作成
button = Button(win, text="クリック", font=('Helvetica 15 bold'), image=img, compound=LEFT, command=close_win)
button.pack()

win.mainloop()

実行結果

上記のコードを実行すると、画像とテキストラベルが並んで表示されたボタンを含むウィンドウが立ち上がります。ボタンをクリックすると、close_win関数が呼び出され、ウィンドウが閉じられます。

なお、Pillow(PIL)ライブラリを使用しているため、事前に pip install pillow コマンドでインストールしておく必要があります。また、古いバージョンのPillowではImage.ANTIALIASが廃止されている場合があるため、その際はImage.LANCZOSImage.Resampling.LANCZOSに置き換えてください。

  1. Tkinterで画像をボタンとして使う方法をわかりやすく解説

    Tkinterでは、画像ファイルをそのままボタンとして表示することができます。この記事では、角丸の画像ボタンを作成する方法を、実際のコード例とともに解説します。ここで紹介する手法は、フォーム、ゲーム、ダイアログボックスなど、さまざまなアプリケーションに応用できる汎用的なテクニックです。 画像ボタンの作り方の基本 Tkinterで見栄えの良い角丸ボタンを作る最も簡単な方法は、あらかじめ用意したボタン用の画像を、クリック可能なウィジェットとして配置することです。これを実現するのがPhotoImage()関数で、指定した画像ファイルを読み込んでボタンに渡すことができます。 具体的には、以下の手順で画

  2. Tkinterでボタンのテキストサイズをウィンドウに合わせて動的に変更する方法

    Tkinterのフレーム内にボタンを作成した際、ボタンのテキストをメインウィンドウのサイズに合わせて動的に拡大・縮小させたいケースはよくあります。ボタン自体はButtonウィジェットを使えば簡単に作成できますが、テキストサイズを動的に変化させるには、いくつかの機能を組み合わせる必要があります。この記事では、テキスト付きのボタンを作成し、Gridメソッドのrowconfigure()とcolumnconfigure()を使って、メインウィンドウ(ルートウィンドウ)のリサイズに追従できるようにする方法を解説します。bind(<Configure>)でイベントを結び付けるボタンのテキスト