プログラミングの腕を磨くために、ゲーム制作に挑戦するのは、とても良い方法だ。なぜなら、ゲームは遊ぶだけではなく、作るのも楽しいので、楽しみながら、プログラミングを覚えることができるからだ。

そのため、Pythonを身につけようと思って、一通りの文法を覚えたら、ぜひ、ゲーム開発に挑戦してみよう。今回は、Pythonに標準でインストールされているGUIライブラリTkinterを利用して、画面に図形を描画してみよう。

Tkinterとは?

Tkinterとは、PythonからGUIを構築するための標準ライブラリだ。この手のライブラリは、ウィジェット・ツールキットとも呼ばれる。

もし、Pythonでゲームを作ろうと思った場合、Kivycocos2dPyGameなど、ゲーム専用のライブラリを利用することもできる。しかし、追加でパッケージを導入する必要がある。

その点、Tkinterは、それほど多くの機能を持っているわけではないが、標準でPythonに含まれているので、追加のインストールも不要だ。加えて、サポートも手厚く情報が多いというがメリットがある。

ただし、Tkinterは、Python2系と3系でずいぶん変わっており、情報を探す際には、注意が必要となる。本稿では、Python3系を対象に、Tkinterの使い方を紹介する。

最も基本的なプログラム

Tkinterでは、まず、メイン画面となるウィンドウを作成し、そのウィンドウを動作させるよう、イベントループを実行するように指示する必要がある。真っ白な画面を出すだけの基本的なプログラムは、以下のようになる。

 from tkinter import *
 win = Tk()      # ウィンドウを作成
 win.mainloop()  # イベントループを実行

上記のプログラムを「hello.py」という名前で保存しよう。そして、WindowsならPowerShellやコマンドプロンプトを、macOSならターミナルを開いて、それぞれ以下のようなコマンドを打ち込むとプログラムが実行される。

 # Windowsの場合
 python hello.py

 # macOSの場合
 python3 hello.py

ウィンドウを表示するだけの最も簡単なプログラムを実行したところ

このプログラムでポイントとなるのが、一行目のimport文だ。Tkinterを使うには、必ず「import tkinter」あるいは「from tkinter import *」という宣言が必要となる。そして、二行目で、Tk()と書くと、ウィンドウを作成し、三行目のmainloop()で、ウィンドウをユーザーが操作可能な状態にする。このプログラムが、Tkinterを使う上での基本中の基本となる。

図形を描画してみよう

続いて、画面に線と矩形(長方形)を二つずつ描画してみよう。図形を描画するには、メインウィンドウに図形を描画するためのCanvasを貼り付け、そのCanvas上に図形を描画するよう指定する。

以下のプログラムをテキストエディタに貼り付けて、「simple.py」という名前で保存しよう。

 from tkinter import *

 # ウィンドウを作りCanvasを貼り付ける --- (*1)
 win = Tk()
 cv = Canvas(win, width = 600, height = 400)
 cv.pack()

 # 長方形(矩形)を描画 --- (*2)
 cv.create_rectangle(150, 150, 250, 250, fill="red")
 cv.create_rectangle(320, 270, 370, 320, fill="green")

 # 線を描画 --- (*3)
 cv.create_line(10, 90, 580, 90, fill="blue", width=5)
 cv.create_line(90, 10, 90, 380, fill="blue", width=5)

 win.mainloop()

そして、プログラムを実行するために、以下のコマンドを実行しよう。

 # Windowsの場合
 python simple.py


 # macOSの場合
 python3 simple.py

うまく実行できると、以下のような画面が表示される。

simple.png: 最も基本的なプログラムの例

ここで、プログラムを確認してみよう。プログラムの(※1)の部分では、メインウィンドウを作り、そこに、図形を描画するためのCanvasを貼り付けている。その際、Canvasのサイズを600x400ピクセルと指定している。そのため、メインウィンドウもそれに合うように大きくなる。

次に、(※2)の部分を見てみよう。Canvasを表すオブジェクトcvには、長方形(矩形)を描画する、create_rectangle()というメソッドがあり、このメソッドを呼びだすことで、画面に図形を描画することができる。同様に、(※3)の部分では、create_line()メソッドを使って、線を描画している。

以下は、線、長方形、楕円を描画するメソッドの使い方を示したものだ。

 [書式] 線を描画する
 cv.create_line(x1, y1, x2, y2, x3, y3, ..., オプション)

 [書式] 長方形(矩形)を描画する
 cv.create_rectangle(x1, y1, x2, y2, オプション)

 [書式] 楕円を描画する
 cv.create_oval(x1, y1, x2, y2, オプション)

これらのメソッドに、fill="red"などのオプションを付けることができる。例えば、fillは、図形を何色で塗るのかを"red"や"blue"などの文字列で指定する。widthは、図形のストローク線の太さを指定する。

これらのオプションについては、PythonとTkinterのマニュアルが参考になる。英語になってしまうが、後述のTkinter 8.5 referenceには、より詳しい情報が載せられている。

Python3のtkinterのマニュアル https://docs.python.jp/3/library/tkinter.html
Tkinter 8.5 reference (英語) http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/index.html

まとめ

以上、今回は最も基本的なプログラムを紹介した。画面に線と長方形を描画するだけのプログラムだったが、Tkinterを使う上での基本なので覚えておこう。次回、このサンプルを叩き台にして、簡単なゲームを作ってみよう。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。