カテゴリ: Python 更新日: 2026/06/28

PythonのTkinterでキャンバスを使って図形を描画する方法!初心者向け完全ガイド

PythonのTkinterでキャンバスを使って図形を描画する方法
PythonのTkinterでキャンバスを使って図形を描画する方法

先生と生徒の会話形式で理解しよう

生徒

「Pythonを使って、画面に丸や四角などの図形を描いてみたいです。プログラミングで絵を描くことってできるんですか?」

先生

「もちろんです!Pythonには『Tkinter(ティーキンター)』という、簡単に画面(GUI)を作れる道具が最初から入っています。その中の『Canvas(キャンバス)』という機能を使えば、お絵描き感覚で図形を作れますよ。」

生徒

「キャンバス……まるで画用紙みたいですね!パソコンをあまり触ったことがない私でも、コードを書くだけで図形が表示できるんでしょうか?」

先生

「はい、基本さえ覚えれば誰でも描けます。まずは真っ白なキャンバスを準備するところから、一緒に一歩ずつ進めていきましょう!」

1. Tkinterとキャンバス(Canvas)の基本を知ろう

1. Tkinterとキャンバス(Canvas)の基本を知ろう
1. Tkinterとキャンバス(Canvas)の基本を知ろう

プログラミングで画面やボタンを作ることをGUI(ジーユーアイ)と呼びます。これは「グラフィカル・ユーザー・インターフェース」の略で、マウスで操作できる画面のことです。 Pythonには、このGUIを作るための標準ライブラリ(便利な道具セット)としてTkinterが用意されています。

その中でも今回主役となるCanvas(キャンバス)は、名前の通り「デジタルな画用紙」です。この画用紙の上に、線、長方形、円、多角形、さらには画像などを自由に配置することができます。 パソコンの画面上に自分だけの描画エリアを作る第一歩として、まずはTkinterを動かすための最小限の準備を学びましょう。

2. 図形を描くための土台(ウィンドウ)を作ってみよう

2. 図形を描くための土台(ウィンドウ)を作ってみよう
2. 図形を描くための土台(ウィンドウ)を作ってみよう

図形を描く前に、まずはその図形を載せるための「窓(ウィンドウ)」を作る必要があります。 家の建築に例えると、ウィンドウは「土地」、キャンバスは「床」のようなイメージです。

以下のコードは、Pythonでウィンドウを表示し、その中に横幅400ピクセル、高さ300ピクセルの白いキャンバスを設置するもっともシンプルなプログラムです。


import tkinter as tk

# メインウィンドウを作成します
root = tk.Tk()
root.title("初めてのキャンバス")

# キャンバス(画用紙)を作成します
# widthは横幅、heightは高さ、bgは背景色(background)を指します
canvas = tk.Canvas(root, width=400, height=300, bg="white")

# キャンバスを画面に配置します
canvas.pack()

# 画面を表示し続けるための命令です
root.mainloop()

このプログラムを実行すると、小さな白い四角い画面が表示されます。 import tkinter as tkは「Tkinterという道具箱を、tkという名前で使えるようにしてね」という魔法の言葉です。

3. 座標(ざひょう)の考え方をマスターする

3. 座標(ざひょう)の考え方をマスターする
3. 座標(ざひょう)の考え方をマスターする

パソコンの画面に図形を描くとき、一番大切なのが座標(ざひょう)という考え方です。 これは「画面のどこに描くか」を決めるための住所のようなものです。

キャンバスの左上の端っこが、横(x)も縦(y)も「0」という地点になります。 右に行けば行くほど「x」の数字が大きくなり、下に行けば行くほど「y」の数字が大きくなります。 算数のグラフとは違い、下に行くほど数字が増えるのがコンピュータの世界のルールなので、注意してくださいね。

例えば、「x=100, y=50」という場所は、左端から右に100ピクセル進んで、そこから下に50ピクセル降りた場所を指します。

4. 長方形(四角形)を描画してみよう

4. 長方形(四角形)を描画してみよう
4. 長方形(四角形)を描画してみよう

それでは、実際に図形を描いてみましょう。まずは基本の「長方形」です。 長方形を描くには create_rectangle という命令を使います。

この命令には、長方形の「左上の角の場所」と「右下の角の場所」の2つの地点を教えてあげる必要があります。 (左上のx, 左上のy, 右下のx, 右下のy) という順番で数字を指定します。


import tkinter as tk

root = tk.Tk()
root.title("長方形を描く")

canvas = tk.Canvas(root, width=400, height=300, bg="white")
canvas.pack()

# 水色の長方形を描きます
# (50, 50)から(200, 150)までの範囲に描画
canvas.create_rectangle(50, 50, 200, 150, fill="skyblue", outline="blue")

root.mainloop()

ここで出てきた fill は「塗りつぶす色」、outline は「枠線の色」を指定するオプションです。 英語の色名(red, blue, yellowなど)を入れるだけで、カラフルな図形が作れます。

5. 円や楕円(だえん)を描画するコツ

5. 円や楕円(だえん)を描画するコツ
5. 円や楕円(だえん)を描画するコツ

次に、丸い形を描いてみましょう。キャンバスでは create_oval という命令を使います。 「oval」は楕円という意味ですが、縦と横の長さを同じにすれば、きれいな正円になります。

面白いことに、円を描くときも「その円がすっぽり入る四角形の範囲」を指定します。 箱の中にボールを入れるようなイメージで、その箱の左上と右下の座標を指定すると、その内側に丸が描かれます。


import tkinter as tk

root = tk.Tk()
root.title("円を描く")

canvas = tk.Canvas(root, width=400, height=300, bg="#f0f0f0")
canvas.pack()

# オレンジ色の正円を描きます
canvas.create_oval(100, 50, 200, 150, fill="orange")

# 横長の楕円を描きます
canvas.create_oval(50, 200, 350, 280, fill="pink", width=3)

root.mainloop()

width=3 というのは「枠線の太さ」を3ピクセルにするという意味です。 線を太くすると、イラストのような力強い印象になりますね。

6. 直線や折れ線を引いてみよう

6. 直線や折れ線を引いてみよう
6. 直線や折れ線を引いてみよう

図形だけでなく、単純な「線」を引くこともよくあります。これには create_line を使います。 線の場合は、始点(スタート)と終点(ゴール)の座標を指定します。

さらに、座標を3つ、4つと増やしていくと、カクカクとした折れ線を引くことも可能です。 これを使えば、矢印を作ったり、簡単なグラフのようなものを描くこともできます。


import tkinter as tk

root = tk.Tk()
root.title("線を引く")

canvas = tk.Canvas(root, width=400, height=300, bg="white")
canvas.pack()

# 赤い太い線を引きます
canvas.create_line(10, 10, 300, 100, fill="red", width=5)

# ギザギザの線を引きます
# (x1, y1, x2, y2, x3, y3...) と座標を続けて書きます
canvas.create_line(50, 250, 100, 150, 150, 250, 200, 150, fill="green", width=2)

root.mainloop()

7. 文字を表示してラベル代わりに使う

7. 文字を表示してラベル代わりに使う
7. 文字を表示してラベル代わりに使う

キャンバスには図形だけでなく、文字を書くこともできます。 create_text を使うと、指定した場所にテキストを表示できます。 図形の説明を入れたり、スコアを表示したりする時に便利です。

文字の大きさや種類(フォント)を変えることもできるので、より表現豊かな画面になります。


import tkinter as tk

root = tk.Tk()
root.title("文字を表示する")

canvas = tk.Canvas(root, width=400, height=300, bg="black")
canvas.pack()

# 画面中央に白い文字を表示します
# font引数で「書体」と「サイズ」を指定できます
canvas.create_text(200, 150, text="Hello Python!", fill="white", font=("MS Gothic", 24))

root.mainloop()

8. 図形の色指定とカラーコードの秘密

8. 図形の色指定とカラーコードの秘密
8. 図形の色指定とカラーコードの秘密

これまでは "red" や "blue" といった名前で色を指定してきましたが、コンピュータではもっと細かく色を決めることができます。 それが「カラーコード」と呼ばれるものです。

例えば、#FF0000 は赤、#00FF00 は緑、#0000FF は青を意味します。 16進数という数字とアルファベットの組み合わせで、数万種類以上の色を自由に作り出すことができるのです。 お気に入りの色を見つけたら、このコードを使って自分好みのデザインに仕上げてみましょう。

9. 複数の図形を組み合わせて絵を描こう

9. 複数の図形を組み合わせて絵を描こう
9. 複数の図形を組み合わせて絵を描こう

これまでに学んだ長方形、円、線を組み合わせれば、一つの「絵」を完成させることができます。 例えば、四角形の上に三角形(多角形:create_polygon)を乗せれば家になりますし、円を組み合わせれば雪だるまになります。

プログラミングの面白いところは、一度書いたコードの数字を少し変えるだけで、図形の大きさを一気に変えたり、色を一瞬で塗り替えたりできる点です。 たくさん試行錯誤して、キャンバスの上に自分だけの世界を作ってみてください。


import tkinter as tk

root = tk.Tk()
root.title("組み合わせの練習")

canvas = tk.Canvas(root, width=400, height=400, bg="lightyellow")
canvas.pack()

# 家の本体(長方形)
canvas.create_rectangle(150, 200, 250, 300, fill="brown")
# 屋根(多角形/三角形)
canvas.create_polygon(130, 200, 270, 200, 200, 120, fill="red", outline="black")
# 窓(小さな長方形)
canvas.create_rectangle(180, 230, 220, 270, fill="white")

root.mainloop()

10. 初心者がつまずきやすいポイントと解決策

10. 初心者がつまずきやすいポイントと解決策
10. 初心者がつまずきやすいポイントと解決策

最後に、初めてキャンバスを使う人がよく困ってしまうポイントをいくつか紹介します。

  • 図形が表示されない: canvas.pack() を書き忘れていませんか?これがないと、画用紙が画面に貼り付けられません。
  • エラーが出る: 括弧の閉じ忘れや、カンマ , の打ち忘れがないか確認しましょう。プログラミングは一文字の間違いでも動かなくなります。
  • 画面がすぐに消える: 最後の root.mainloop() があるか確認してください。これが「画面を出し続けて」という命令です。

最初は誰でも失敗します。エラーが出ても、それは「ここを直せば動くよ」というパソコンからのメッセージだと思って、優しく見守ってあげてくださいね。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
Python のGUIプログラミングの記事一覧へ
新着記事
New1
Python
Pythonの整数と浮動小数点数の違いとは?数値型の基本を解説
New2
Python
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
New3
Python
Pythonのbreakとcontinueの違いとは?ループの制御方法をマスター
New4
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.2
Java&Spring記事人気No2
PHP
PHP の文字列のフォーマット(sprintf, printf)
No.3
Java&Spring記事人気No3
Python
Pythonで文字列を置換する方法!replace()の使い方と正規表現の活用
No.4
Java&Spring記事人気No4
Python
Pythonでリストを分割する方法(スライス / split() / itertools)
No.5
Java&Spring記事人気No5
Python
Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用
No.6
Java&Spring記事人気No6
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.7
Java&Spring記事人気No7
PHP
PHPの認証機能を実装する方法!初心者でもわかるログイン・ログアウト処理の基本
No.8
Java&Spring記事人気No8
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック