Python Code Notes

Information by python engineer

【tkinter】ウィジェットをドラッグで移動させる方法【Python】

ウィジェットをドラッグで移動させる処理の例を示す。


【スポンサーリンク】


以下の例では、B1-Motionイベント(ウィジェットをマウス左ボタンでドラッグしたときに発生するイベント)を利用してボタンウィジェットの位置を変更している。

gist5a5f3b0d3ccb775b0148be66d5d390e7

以下のB1-Motionイベント発生時に実行する関数(move_button関数)では、ウィジェットの座標とマウスポインタの座標を取得し、placeメソッドでウィジェットの座標を更新することでウィジェットをドラッグ移動させている。

def move_button(self, event):
    x = self.winfo_x() + event.x
    y = self.winfo_y() + event.y
    self.place(x=x, y=y)

上記例ではマウスポインタ部にウィジェット左上端が位置する。ウィジェット中央が来るようにする例は以下の通り。

def move_button2(self, event):        
        x = self.winfo_x() + event.x - self.winfo_width() / 2
        y = self.winfo_y() + event.y - self.winfo_height() / 2
        self.place(x=x, y=y)