GUI

Pythonでペイントアプリを作ってみる (5) マウスでラインを描いてみる

タカ

前回はツールボタンを作成し、GUIを用意しました。今回は、Canvasでドラッグアンドドロップした時の処理を用意して、線を描く処理を実装してみます。

追加する処理

・取得したマウス座標を保持するx,yをマウスのドラッグのし始め(start)と、終了時(end)の変数の用意
・canvasに左クリック(Button-1)時に発火する関数と、
左クリックのリリース(Button1-ButtonRelease)時に発火する関数を登録
・それぞれの関数で、マウスの座標を取得して変数へ保存
 リリース時にはdraw_line()を呼ぶように
・前回実装したdraw_lineにキャンバスに線を描く処理を追加
・initの最後で、self.bind_mouse() を追加して

start_x, start_y = 0, 0
end_x, end_y = 0, 0

#--省略--

def bind_mouse(self):
    self.canvas.bind("<Button-1>", self.on_mouse_pressed)
    self.canvas.bind(
        "<Button1-ButtonRelease>", self.on_mouse_released)

def on_mouse_pressed(self, event):
    self.start_x = self.canvas.canvasx(event.x)
    self.start_y = self.canvas.canvasy(event.y)

def on_mouse_released(self, event):
    self.end_x = self.canvas.canvasx(event.x)
    self.end_y = self.canvas.canvasy(event.y)
    self.draw_line()

def draw_line(self):
    self.canvas.create_line(
        self.start_x, self.start_y, self.end_x, self.end_y)
実行結果