Home

簡単な描画例

 

次の簡単なPython描画スクリプトを作成した。なお、イベントとイベントハンドラーを用いた例を、ウェブサイトに用意した。

 

from tkinter import *

 

c = Canvas(width = 800, height = 600, background = 'white')

c.pack()

c.create_rectangle(200, 100, 600, 500, outline = 'aqua', fill = 'aqua')

c.create_oval(300, 200, 500, 400, outline = 'blue', width = 10, fill = 'greenyellow')

 

Ubuntuで実行するときは、実行前にtkinterを次のコマンド

sudo apt-get -y install python3-tk

を実行してインストールしておく必要がある。また、ubuntuでの実行時には、最後に

Ck = input(Press Enter Key.)

などのスクリプトをおいて、上のCanvas描画スクリプトの実行後、直ちにスクリプトの実行が終了することのないようにしておかないと、Canvasへの描画を見ることなく、スクリプトの実行が終了してしまう。

 

このスクリプトを実行すると下図(図1)の描画が表示される。

図1

 

上のスクリプトの1行目の

from tkinter import *

tkinterCanvasクラスを利用するためのものである。

次の文

c = Canvas(width = 800, height = 600, background = 'white')

によって、描画用キャンバスが用意される。横800ピクセル、縦600ピクセルの白のキャンバスである。

このキャンパスが表示されるように

c.pack()

を実行する。

長方形の描画を次の文で行っている。

c.create_rectangle(200, 100, 600, 500, outline = 'aqua', fill = 'aqua')

引数の最初のペア(200, 100)が長方形の左上角の座標である。2番目のペア(600, 500)が長方形の右下角の座標である。座標はキャンバスの左上角が(0, 0)右下角が(800, 600)である。横軸は右方向に座標値が大きくなるが、縦軸は下方向に座標値が大きくなることに注意。

キーoutlineに設定される色は、長方形の辺の色である。キーfillに値が設定されていないときは辺のみが描画される。

次の文

c.create_oval(300, 200, 500, 400, outline = 'blue', width = 10, fill = 'greenyellow')

により、左上角の座標が(300, 200)、右下角の座標が(500, 400)の長方形に内接する円(楕円/卵形)が描かれる。キーwidthの値の太さの線で輪郭が描かれる。

 

 

次のスクリプトは文字列を表示するものである。

from tkinter import *

c = Canvas(width = 500, height = 200, background = 'white')

c.pack()

c.create_text(250, 100, text = 'Hello !', font = ('Times New Roman', 100), fill = 'blue')

 

上のスクリプトを実行すると図2のように文字列が表示される。

図2

 

文字列の中心が(250, 100)である。

 

tkinter.Canvasの詳しい説明は、Pythonhelpから得ることができる(図3)。

図3

 

次のスクリプトでは、フォーム内の円が回転する。

 

from tkinter import *

import time

import math

 

c = Canvas(width = 400, height = 300, background = 'white')

c.pack()

t = 0.0

wh = 100

try:

    while True:

        c.create_rectangle(0, 0, 400, 300, fill = 'white')

        ws = math.fabs(wh * math.cos(t))

        c.create_oval(200 - ws, 50, 200 + ws, 250, fill = '#0000ff')

        c.update()

        time.sleep(0.1)

        t += 0.1

        if (t > math.pi * 2):

            t -= math.pi * 2

except:

    print('Good bye !')

 

実行時の様子は下図のようである。

  

 

 

Home