Tkinterでマウスの左ボタンを押している間のイベントをバインドする方法
Tkinterで「マウスの左ボタンを押したまま」の状態にイベントをバインドしたい場合、<B1-Motion>イベントを活用します。この記事では、左ボタンを押しながらマウスを動かしたときと、ボタンを離したときにそれぞれ処理を実行する方法を、具体的な手順とサンプルコード付きで解説します。
実装手順
以下の手順で、左ボタンを押している間のマウス操作にイベントをバインドできます。
Tkinterフレーム(ウィンドウ)のインスタンスを作成します。
win.geometryメソッドを使ってウィンドウのサイズを設定します。
イベントハンドラhandler1を定義します。これは左ボタンを押しながらマウスを動かしたときにメッセージを出力する関数です。
もう一つのイベントハンドラhandler2を定義します。こちらはマウスボタンを離したときにメッセージを出力する関数です。
bindメソッドを使って、<B1-Motion>イベントにhandler1を紐付けます。
同様にbindメソッドを使って、<ButtonRelease-1>イベントにhandler2を紐付けます。
最後にアプリケーションウィンドウのmainloopを実行します。
サンプルコード
# 必要なライブラリをインポート
from tkinter import *
# tkinterフレームのインスタンスを作成
win = Tk()
# ウィンドウのサイズを設定
win.geometry("750x250")
# イベントハンドラを定義
def handler1(e):
print("左ボタンを押しながらマウスを移動しています。")
def handler2(e):
print("ボタンが離されました")
# メインウィンドウにラベルを作成
Label(win, text="左ボタンを押しながらマウスを動かしてください", font='Helvetica 15 underline').pack(pady=30)
# マウスイベントをハンドラにバインド
win.bind('<B1-Motion>', handler1)
win.bind('<ButtonRelease-1>', handler2)
win.mainloop()
実行結果
このコードを実行すると、次のような画面が表示されます。

ここで、左ボタンを押したままマウスを動かすと、コンソールに次のような出力が表示されます。マウスが動くたびにイベントが発生し、メッセージが出力されるのが確認できます。
左ボタンを押しながらマウスを移動しています。 左ボタンを押しながらマウスを移動しています。 左ボタンを押しながらマウスを移動しています。 左ボタンを押しながらマウスを移動しています。 左ボタンを押しながらマウスを移動しています。
その後、マウスの左ボタンを離すと、次のように出力されます。
ボタンが離されました
ポイント解説
<B1-Motion>は「左ボタン(Button 1)を押しながらマウスが移動した」ときに発生するイベントです。ドラッグ操作の検出などによく使われます。
<ButtonRelease-1>は「左ボタンが離された」ときに発生するイベントです。ドラッグの終了を検知したい場合に利用します。
右ボタンや中央ボタンに対応させたい場合は、それぞれ<B3-Motion>、<B2-Motion>を使用します。
このように、bindメソッドとマウスイベントを組み合わせることで、ドラッグ&ドロップや描画アプリなど、インタラクティブなGUIアプリケーションを簡単に実装できます。
-
Tkinterでボタンを押した後にEntryウィジェットの内容をクリアする方法
TkinterのEntryウィジェットは、ユーザーからの入力を受け付けるための1行テキストフィールドを表示する際に使用されます。このウィジェットの内容を消去するには、delete(0, END)メソッドを使います。このメソッドは指定した範囲の文字列を削除するもので、「0」(先頭)から「END」(末尾)までを指定することで、入力欄全体を空にすることができます。実際の実装では、この削除処理を関数として定義し、Buttonオブジェクトのcommandオプションに渡します。こうすることで、ボタンがクリックされたタイミングでEntryウィジェットの内容がクリアされる仕組みになります。実装例以下の例では、
-
Tkinterでマウスカーソルを変更する方法【cursorプロパティ活用ガイド】
Tkinterは、Pythonに標準搭載されているGUIライブラリで、さまざまな機能的なデスクトップアプリケーションを開発するために広く利用されています。豊富な関数やメソッドが用意されており、アプリケーション開発時に高い拡張性と多彩な機能を実現できます。 本記事では、Tkinterのcursor(カーソル)プロパティを使って、ボタン上にマウスを乗せたときのカーソル形状を変更する方法を解説します。Tkinterのウィジェットには多数のカーソルマップが用意されており、エンドユーザーにさまざまな視覚的なフィードバックを提供できます。 Tkinterで利用できる主なカーソル一覧 cursorプロパテ