3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

お絵描きボード

Posted at
1 / 10

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 を決めているのを見て、「なるほど」と感動しました。


# 実行結果
黒板風にしてみた!
2020-07-10 (3).png


改善点1

素早くマウスを動かすときれいな線でなくなってしまう
2020-07-10 (2).png
これはパソコンの処理の問題なのであろうと思われる。点を連続で絵がぐ方法ではない方法なら改善できるかもしれない。


改善点2

一度間違うと消すことが出来ない。マウスボタンを押すか押さないかで点を描くかどうかが決まっているので、点を消すという動作を行うための定義が足りなくなってしまう。
マウスボタンを押す前に何かで場合分け出来たら消しゴムも可能になるのかもしれない。


感想

プログラミングに触れるのは初めてだったので難しい部分もあったが、楽しく取り組めた。興味がわいたので、自主的に取り組んでみようと思う。


  • 参考

pythonでTkinterを使ってGUIアプリを作る
[https://daeudaeu.com/programming/python/tkinter/python_tkinter/]

いちばんやさしいPython入門教室     著 大澤 文孝

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?