Python GUIプログラミング(Tkinter)

Pythonには複数のGUI開発ライブラリがあります。一般的なPython GUIライブラリは以下の通りです:

  • Tkinter:Tkinterモジュール(Tkインターフェース)はPython標準のTk GUIツールキットのインターフェースです。TkとTkinterはほとんどのUnixプラットフォームで使用でき、WindowsやMacintoshシステムでも同様に利用できます。Tk8.0以降のバージョンではネイティブウィンドウスタイルを実現し、ほとんどのプラットフォームで良好に動作します。

  • wxPython:wxPythonはオープンソースソフトウェアであり、Python言語向けの優れたGUIグラフィックライブラリです。Pythonプログラマーが完全で機能的なGUIユーザーインターフェースを簡単に作成できるようにします。

  • Jython:JythonアプリケーションはJavaとシームレスに統合できます。一部の標準モジュールを除き、JythonはJavaのモジュールを使用します。Jythonは、標準のPythonにあるC言語に依存しないほぼすべてのモジュールを備えています。例えば、JythonのユーザーインターフェースはSwing、AWT、SWTを使用します。Jythonは動的または静的にJavaバイトコードにコンパイルできます。


Tkinter プログラミング

TkinterはPythonの標準GUIライブラリです。PythonはTkinterを使用してGUIアプリケーションをすばやく作成できます。

TkinterはPythonのインストールパッケージに内蔵されているため、PythonをインストールすればTkinterライブラリをインポートできます。また、IDLEもTkinterで作成されています。単純なグラフィカルインターフェースであれば、Tkinterで十分対応できます。

注意:Python3.x バージョンで使用するライブラリ名は tkinter です。つまり、先頭の T は小文字です。

import tkinter

GUIプログラムを作成する

  • 1. Tkinterモジュールをインポートする
  • 2. ウィジェットを作成する
  • 3. このウィジェットのmaster(つまり、このウィジェットがどのウィジェットに属するか)を指定する
  • 4. GM(geometry manager)にウィジェットが生成されたことを伝える

例(Python3.x)

#!/usr/bin/python3 import tkinter top = tkinter.Tk() # メッセージループに入る top.mainloop()

例(Python2.x)

#!/usr/bin/python # -*- coding: UTF-8 -*- import Tkinter top = Tkinter.Tk() # メッセージループに入る top.mainloop()

上記のコードを実行した結果は次の図の通りです:

tkwindow

例

#!/usr/bin/python # -*- coding: UTF-8 -*- # Python2.x のインポート方法 from Tkinter import * # Tkinterライブラリをインポート # Python3.x のインポート方法 #from tkinter import * root = Tk() # ウィンドウオブジェクトの背景色を設定 # 2つのリストを作成 li = ['C','python','php','html','SQL','java'] movie = ['CSS','jQuery','Bootstrap'] listb = Listbox(root) # 2つのリストウィジェットを作成 listb2 = Listbox(root) for item in li: # 最初のウィジェットにデータを挿入 listb.insert(0,item) for item in movie: # 2番目のウィジェットにデータを挿入 listb2.insert(0,item) listb.pack() # ウィジェットをメインウィンドウに配置 listb2.pack() root.mainloop() # メッセージループに入る

上記のコードを実行した結果は次の図の通りです:


Tkinter ウィジェット

Tkinterは、GUIアプリケーションで使用するボタン、ラベル、テキストボックスなどのさまざまなウィジェットを提供します。これらのウィジェットは通常、コントロールまたはウィジェットと呼ばれます。

現在、Tkinterには15種類のウィジェットがあります。以下に、これらのウィジェットと簡単な説明を示します。

ウィジェット説明
Buttonボタンウィジェット;プログラムにボタンを表示します。
Canvasキャンバスウィジェット;線やテキストなどのグラフィック要素を表示します。
Checkbuttonチェックボックスウィジェット;プログラムに複数選択ボックスを提供します。
Entryエントリーウィジェット;簡単なテキスト内容を表示します。
Frameフレームウィジェット;画面上に矩形領域を表示します。主にコンテナとして使用します。
Labelラベルウィジェット;テキストとビットマップを表示できます。
Listboxリストボックスウィジェット;Listboxウィジェットは、ユーザーに文字列リストを表示するために使用します。
Menubuttonメニューボタンウィジェット;メニュー項目を表示するために使用します。
Menuメニューウィジェット;メニューバー、ドロップダウンメニュー、ポップアップメニューを表示します。
Messageメッセージウィジェット;複数行のテキストを表示します。ラベルと似ています。
Radiobuttonラジオボタンウィジェット;単一選択のボタン状態を表示します。
Scaleスケールウィジェット;数値目盛りを表示し、出力する数値の範囲を限定します。
Scrollbarスクロールバーウィジェット;内容が表示領域を超える場合に使用します(リストボックスなど)。
Textテキストウィジェット;複数行のテキストを表示するために使用します。
Toplevelトップレベルウィジェット;独立したダイアログを提供するために使用します。Frameと似ています。
Spinboxスピンボックスウィジェット;Entryと似ていますが、入力範囲の値を指定できます。
PanedWindowPanedWindowはウィンドウのレイアウト管理用ウィジェットで、1つ以上の子ウィジェットを含めることができます。
LabelFrameLabelFrameはシンプルなコンテナウィジェットです。複雑なウィンドウレイアウトによく使用されます。
tkMessageBoxアプリケーションのメッセージボックスを表示するために使用します。

標準属性

標準属性とは、すべてのウィジェットに共通する属性です。サイズ、フォント、色などです。

属性 説明
Dimension ウィジェットのサイズ;
Color ウィジェットの色;
Font ウィジェットのフォント;
Anchor アンカー;
Relief ウィジェットのスタイル;
Bitmap ビットマップ;
Cursor カーソル;

ジオメトリ管理

Tkinterウィジェットには特定のジオメトリ管理メソッドがあり、ウィジェット領域全体の構成を管理します。以下はTkinterで公開されているジオメトリ管理クラスです:パック、グリッド、プレース

ジオメトリメソッド 説明
pack() パック;
grid() グリッド;
place() プレース;
その他の拡張