Python

TKinter

当ページではTkinterについてまとめています。

概要

Tkinterは正式には「Tk interface」といい、その名の通りPythonからTkを利用するためのインターフェースを指します。TkはTclというプログラミング言語用に開発されたGUIツールキットです。Pythonに限らず、多くの有名なプログラミング言語で採用されています。

基本的な処理

TkinterはPythonに標準搭載されていますので、Pythonのインストールと同時に利用可能になります。利用するにはモジュールtkinterをインポートする必要があります。

# 組み込みではないので、モジュールをインポートする必要ありimport tkinter

モジュールの準備が終わりましたら、まずはクラスTkをインスタンス化してフレーム(ウィンドウのこと)を生成します。インスタンスを格納する変数名は慣例としてrootを用います。

import tkinterroot = tkinter.Tk()

クラスTkがインスタンス化されると同時にフレームが表示されます。以後、このrootに紐づける形で様々なウィジェット(画面を構成する部品のこと)や、イベントハンドラを実装していきます。ただ、イベントの発火タイミングを監視するためには、処理の末尾に関数mainloopを配置する必要があります。

import tkinterroot = tkinter.Tk()# ここに処理を記述root.mainloop() # 関数mainloopの呼び出しを忘れないこと

ウィジェットの配置

ウィジェットの配置方法はpack・grid・placeの3種類あります。

関数packを用いるとWebページに要素を配置するようにウィジェットを配置することができます。

関数gridを用いるとスプレッドシートのようにウィジェットを配置することができます。

関数placeを用いると親ウィジェットに対する相対的な位置をピクセル単位で指定・配置することができます。

文字・画像の配置

フレームに文字、あるいは画像を配置するにはLabelウィジェットを使用します。

Labelを使うにはクラスLabelをインスタンス化する必要があります。第1引数に配置するフレーム、仮引数textに配置する内容を指定します。

# 文字の場合label_1 = tkinter.Label(root, text = 'Hello world.')label_1.pack()# 画像の場合logo = tkinter.PhotoImage(file='test.gif')label_1 = tkinter.Label(root, image = logo)label_1.pack()

文字の設定

文字を配置する際は、いくつかのオプションを指定することができます。

クラスLabelの仮引数fgに文字列を指定すると文字の色を変えることができます。また、仮引数bgに同様に値を渡すと背景色が変化します。

# 文字は赤色、背景は緑色label_1 = tkinter.Label(root, text = 'Hello world.', fg = 'red', bg = 'green')

仮引数fontにはフォントの種類、文字の大きさ、フォントへの効果を渡すことができます。引数はtupleでなくてはなりません。各要素は空文字とすることで初期値が使われるようです。

# メイリオ・14px・太字label_1 = tkinter.Label(root, text = 'Hello world.', font = ('Meiryo', '14', 'bold'))

ボタンの配置

フレームにボタンを配置するにはButtonウィジェットを使用します。

Buttonを使用するにはクラスButtonをインスタンス化する必要があります。第1引数に配置するフレーム、仮引数textにボタン上に表示する文字、仮引数fgにボタンの色、仮引数commandにボタンを押したときに実行する処理を指定します。

button_1 = tkinter.Button(root, text = '終了', command = quit)