Tkinterでオン/オフ切り替えボタン(トグルスイッチ)を作成する方法
Tkinterは、アプリケーション開発に必要なさまざまな種類のウィジェットを追加できる機能を提供しています。代表的なウィジェットには、ボタン(Button)、エントリー(Entry)、テキストボックス(Text)、スライダー(Scale)などがあります。
本記事では、クリックするたびに「オン」状態と「オフ」状態が切り替わるトグルボタンの実装方法を解説します。例として、以下の2つの状態を持つスイッチボタンを作成します。
- スイッチ オン(Switch On)
- スイッチ オフ(Switch Off)
サンプルコード
# tkinterをインポート
from tkinter import *
# ウィンドウのインスタンスを作成
win = Tk()
# タイトルを設定
win.title('On/Off Demonstration')
# ウィンドウサイズを設定
win.geometry("600x400")
win.resizable(0, 0)
# ボタンの初期状態をオンに設定する変数
is_on = True
# メッセージを表示するラベルを作成
label = Label(win, text="Night Mode is On", bg="white", fg="black", font=("Poppins bold", 22))
label.pack(pady=20)
# スイッチを切り替える関数を定義
def button_mode():
global is_on
# 現在の状態がオンかオフかを判定
if is_on:
on_.config(image=off)
label.config(text="Day Mode is On", bg="white", fg="black")
is_on = False
else:
on_.config(image=on)
label.config(text="Night Mode is On", fg="black")
is_on = True
# 使用する画像を定義
on = PhotoImage(file="on.png")
off = PhotoImage(file="off.png")
# ボタンを作成
on_ = Button(win, image=on, bd=0, command=button_mode)
on_.pack(pady=50)
# ウィンドウを実行し続ける
win.mainloop()コードのポイント
このコードでは、グローバル変数 is_on を使ってボタンの現在の状態を管理しています。ボタンがクリックされると button_mode() 関数が呼び出され、is_on の値に応じて表示する画像とラベルのテキストを config() メソッドで切り替えます。また、bd=0 を指定することでボタンの枠線を消し、画像自体をスイッチのように見せています。
実行結果
上記のコードを実行すると、オン/オフを操作できるボタンが表示されたウィンドウが起動します。
ボタンをクリックすると、画像とラベルの表示が次のように切り替わります。
初回クリック時は「Day Mode is On(デイモード)」に切り替わり、もう一度クリックすると元の「Night Mode is On(ナイトモード)」に戻ります。この仕組みを応用すれば、ダークモードの切り替えや各種設定の有効/無効化など、実際のアプリケーションで役立つUIを簡単に実装できます。
-
Python Tkinterでボタンにスタイルを適用する方法を解説
Tkinterは、PythonでGUIアプリケーションを構築するための標準ツールキットであり、直感的なインターフェース開発を強力にサポートします。ボタンのスタイリングにおいても、フォント、サイズ、文字色などを自由にカスタマイズできる柔軟な仕組みが用意されています。本記事では、キャンバス上の特定のボタンだけにスタイルを適用する方法と、すべてのボタンに一括でスタイルを適用する方法を、具体的なコード例とともに解説します。特定のボタンにスタイルを適用するまず、キャンバス上に2つのボタンが配置されており、1つ目のボタンにのみスタイルを適用したいケースを考えてみましょう。この場合は、ttkのStyleクラ
-
PythonのTkinterでボタンに画像を追加する方法【サンプルコード付き】
Pythonの標準GUIライブラリ「Tkinter」には、ボタンなどのウィジェットに画像を追加する機能が備わっています。テキストだけではなくアイコンや画像を表示することで、ユーザーは視覚的なシンボルから操作内容を直感的に把握できるようになり、インターフェース全体の使いやすさが大きく向上します。 本記事では、Pillow(PIL)ライブラリのImageTkモジュールに含まれるPhotoImageクラスを使用し、ローカルに保存した画像ファイルを読み込んでウィジェットに表示する方法を解説します。画像ファイルのパスは、ご自身の環境に合わせて適宜変更してください。 サンプルコード from tkint