Tkinterを用いてお絵描きボードを作る!
授業の中で扱った教科書の中のLesson7-3をプログラミングした際に、この描画を連続で行えば線を描けるのではないかと思っていたのを、調べながら形にしました。
Lesson7-3との違い
- 教科書では、クリックという動作で円を描くことをプログラミングしていたが、今回はマウスボタンが押されている間ずっと描画されていること。
- 線を描くには描画される円が大きいと不自然になるので、なるべく小さい円を描画することでより自然な線を描けるようにしたこと。
コード紹介
実際にプログラミングしたコードを紹介します。
import tkinter
def mouse_click_func(event):
global press
press = True
まず、ここでマウスボタンをクリックすることを定義します。
def mouse_release_func(event):
global press
press = False
次に、マウスボタンを離すことを定義します。
def mouse_move_func(event):
global canvas
x = event.x
y = event.y
if press:
canvas.create_oval(x - 2, y - 2, x + 2, y + 2, fill = "white", width=0)
そして最後に、マウスを動かしている場合で、かつボタンを押し続けているときに円を描画することを定義します。
コードを製作するにあたって
連続的に円を描画するにはボタンのON OFF だけではなくONかつマウスが移動しているという3パターンの場合分けが必要なのです。
私は初め、ボタンを押しながらマウスを動かす・ボタンを離すの2種類で考えていたのですが、どうしたらいいのかわかりませんでした。
そこで、サイトを参照するとボタンのON OFFでまずpress の true false を決めているのを見て、「なるほど」と感動しました。
改善点1
素早くマウスを動かすときれいな線でなくなってしまう
これはパソコンの処理の問題なのであろうと思われる。点を連続で絵がぐ方法ではない方法なら改善できるかもしれない。
改善点2
一度間違うと消すことが出来ない。マウスボタンを押すか押さないかで点を描くかどうかが決まっているので、点を消すという動作を行うための定義が足りなくなってしまう。
マウスボタンを押す前に何かで場合分け出来たら消しゴムも可能になるのかもしれない。
感想
プログラミングに触れるのは初めてだったので難しい部分もあったが、楽しく取り組めた。興味がわいたので、自主的に取り組んでみようと思う。
- 参考
pythonでTkinterを使ってGUIアプリを作る
[https://daeudaeu.com/programming/python/tkinter/python_tkinter/]
いちばんやさしいPython入門教室 著 大澤 文孝