コンテンツにスキップ

tkinter入門

1.tkinterの特徴

  • pythonの標準ライブラリのため追加のインストール不要
  • 参考書籍や多くの参考Webサイトがあり、勉強しやすい
  • Tcl/Tk のPythonバインディング(注1)

(注1)1988年に登場したスクリプト言語「Tcl」を使ってGUI開発を行うためのツールキットに「Tk」というものがあります。これを指して「Tcl/Tk」と呼びますが、TkinterはPythonでTcl/Tkを扱うためのライブラリとなっています。

2.公式ページ

本ページではサンプルプログラムで典型的な使用例を示しているだけなので、詳細は公式ページをご覧ください。

公式ページ:Tk を用いたグラフィカルユーザインターフェイス

なお、tkinterについての情報は日本語でも多く存在しています。ネットで検索すれば容易に見つけることができるでしょう。

3.準備

tkinterはpythonの標準ライブラリなので、インストール操作は不要です。

4.サンプルプログラム

(1) キーボードから文字列を入力する

プログラム

import tkinter
def get_func():
# エントリーに入力された文字列を取得してラベルに表示
mess = "ハロー " + entry.get() + "さん!"
label.config(text=mess)
# アプリの作成
app = tkinter.Tk()
# エントリーの作成
entry = tkinter.Entry(
app
)
entry.pack()
button = tkinter.Button(
app,
command=get_func,
text="ボタン"
)
button.pack()
label = tkinter.Label(
app,
text=""
)
label.pack()
# アプリの待機
app.mainloop()

(出典:Tkinterの使い方:エントリー(Entry)の使い方 ※解説用に一部編集)

出力例

tkinter-01-01.png

tkinter-01-02.png

(2) 図形を描く・動かす

プログラム

import tkinter
# 6. 円を移動させる
def keyPush(event):
global canvas
dx = 0
dy = 0
### キー名取得
key_name = event.keysym
### 円移動
if key_name == "Left":
dx = -10
elif key_name == "Right":
dx = 10
elif key_name == "Up":
dy = -10
elif key_name == "Down":
dy = 10
canvas.move("ball", dx, dy)
# 1. メインウィンドウを作成する
app = tkinter.Tk()
# 2. メインウィンドウにキャンバスを作成・配置する
canvas = tkinter.Canvas(
app,
width=1000,
height=700,
bg = "gray"
)
canvas.pack()
# 3. キャンバスに図形を描画する
canvas.create_oval(
500, 350, 580, 430,
fill="green",
tag="ball"
)
# 4. キー入力を受け付ける
app.bind("<KeyPress>", keyPush)
# 5. メインループ
app.mainloop()

出力例

tkinter-01-03.png

やってみよう

1.画像を使ってみよう

上記のプログラムで、図形の代わりに好きな画像を画像ファイルから読み込んで使ってみよう。

2.自動的に動くようにしてみよう

図形や画像が上から下へ自動的に落ちていくプログラムを作ろう

注)一部の資料には画像を任意の座標に配置するのに moveto() メソッドを使っている例も見られますが、現在このメソッドは使えない場合もありますので注意しましょう。これは、 coords() メソッドで実現することができます。

3.(応用)壁に当たったら跳ね返るようにしよう

上下左右に動くようにして、壁に当たったら跳ね返るようにしよう。

サンプルコード

tkinter_img_move.zip