Tkinterでマウスカーソルを変更する方法【cursorプロパティ活用ガイド】
Tkinterは、Pythonに標準搭載されているGUIライブラリで、さまざまな機能的なデスクトップアプリケーションを開発するために広く利用されています。豊富な関数やメソッドが用意されており、アプリケーション開発時に高い拡張性と多彩な機能を実現できます。
本記事では、Tkinterのcursor(カーソル)プロパティを使って、ボタン上にマウスを乗せたときのカーソル形状を変更する方法を解説します。Tkinterのウィジェットには多数のカーソルマップが用意されており、エンドユーザーにさまざまな視覚的なフィードバックを提供できます。
Tkinterで利用できる主なカーソル一覧
cursorプロパティに指定できる代表的なカーソルは以下のとおりです。
- arrow(矢印)
- circle(円)
- clock(時計)
- cross(十字)
- dotbox(点線の四角形)
- exchange(交換)
- fleur(移動用十字矢印)
- heart(ハート)
- man(人型)
- mouse(マウス)
- pirate(海賊旗)
- plus(プラス)
- shuttle(シャトル)
- sizing(サイズ変更)
- spider(クモ)
- spraycan(スプレー缶)
- star(星)
- target(ターゲット)
- tcross(T字)
- trek(トレック)
- watch(砂時計・待機中)
実装例:ボタンごとに異なるカーソルを設定する
まず複数のボタンを作成し、それぞれのボタンに異なるカーソルを適用してみましょう。以下のコードでは、ウィンドウ全体にも「fleur」カーソルを設定しています。
from tkinter import *
# ウィンドウ(フレーム)のインスタンスを作成
win = Tk()
# ウィンドウサイズを設定
win.geometry("700x600")
win.resizable(0, 0)
win.config(cursor="fleur")
# テキストラベルを作成
Label(win, text="Hover on each of these buttons", font=('Poppins', 20)).pack(pady=20)
# cursorプロパティを持つボタンを作成
b1 = Button(win, text="Star", cursor="star")
b1.pack(pady=20)
b2 = Button(win, text="Arrow", cursor="arrow")
b2.pack(pady=20)
b3 = Button(win, text="Circle", cursor="circle")
b3.pack(pady=20)
b4 = Button(win, text="Clock", cursor="clock")
b4.pack(pady=20)
b5 = Button(win, text="Heart", cursor="heart")
b5.pack(pady=20)
b6 = Button(win, text="Man", cursor="man")
b6.pack(pady=20)
b7 = Button(win, text="Mouse", cursor="mouse")
b7.pack(pady=20)
# ウィンドウを実行し続ける
win.mainloop()
実行結果
上記のコードを実行すると、ボタンごとに異なる形状のマウスポインタが表示されるウィンドウが生成されます。各ボタンにマウスを乗せると、設定したカーソル(star、arrow、circle、clockなど)に変化することを確認できます。

ポイントまとめ
- cursorプロパティは、ButtonだけでなくLabelやFrameなど、ほとんどのTkinterウィジェットで使用可能です。
- ウィンドウ全体(root)に設定すれば、アプリケーション全体の既定カーソルを指定できます。
- 「watch」などのカーソルは処理中であることをユーザーに伝える際に便利です。
- 利用できるカーソル名はOSによって表示が異なる場合があるため、実際の見た目は環境ごとに確認することをおすすめします。
-
Tkinterでフレームの背景色を変更する方法
Tkinterでフレームの背景色や前景色を変更したい場合は、Frame関数のbg(背景色)およびfg(前景色)パラメータに任意の値を指定するだけで実現できます。色の指定には、「red」や「black」などの色名のほか、「#FF0000」のような16進数カラーコードも使用できます。サンプルコード以下の例では、異なる背景色を持つ2つのフレームを作成し、それぞれのフレーム内にラベルを配置しています。#必要なライブラリをインポート from tkinter import * #tkinterフレームのインスタンスを作成 win= Tk() #ウィンドウのサイズを設定 win.geometry(65
-
TkinterのButtonウィジェットでビットマップ画像を使う方法
Tkinterでは、画像を使ってボタンを作成し、自由にカスタマイズすることができます。通常はPythonのPhotoImage(file)関数を使って画像ファイルを読み込みます。ただし、PhotoImage()がサポートしているのはPNG、PPM、GIFなど一部の画像形式のみです。実は、Tkinterには標準で用意されたビットマップ画像をボタンに表示する機能もあります。ビットマップ画像とはビットマップ画像とは、画像の1ピクセルを表すドット(点)が行列状に整列して構成される画像のことです。Tkinterでは、外部ファイルを読み込まなくても、あらかじめ定義された以下のビットマップ属性をそのまま利用