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)
例(Python2.x)
上記のコードを実行した結果は次の図の通りです:
例
上記のコードを実行した結果は次の図の通りです:
Tkinter ウィジェット
Tkinterは、GUIアプリケーションで使用するボタン、ラベル、テキストボックスなどのさまざまなウィジェットを提供します。これらのウィジェットは通常、コントロールまたはウィジェットと呼ばれます。
現在、Tkinterには15種類のウィジェットがあります。以下に、これらのウィジェットと簡単な説明を示します。
| ウィジェット | 説明 |
|---|---|
| Button | ボタンウィジェット;プログラムにボタンを表示します。 |
| Canvas | キャンバスウィジェット;線やテキストなどのグラフィック要素を表示します。 |
| Checkbutton | チェックボックスウィジェット;プログラムに複数選択ボックスを提供します。 |
| Entry | エントリーウィジェット;簡単なテキスト内容を表示します。 |
| Frame | フレームウィジェット;画面上に矩形領域を表示します。主にコンテナとして使用します。 |
| Label | ラベルウィジェット;テキストとビットマップを表示できます。 |
| Listbox | リストボックスウィジェット;Listboxウィジェットは、ユーザーに文字列リストを表示するために使用します。 |
| Menubutton | メニューボタンウィジェット;メニュー項目を表示するために使用します。 |
| Menu | メニューウィジェット;メニューバー、ドロップダウンメニュー、ポップアップメニューを表示します。 |
| Message | メッセージウィジェット;複数行のテキストを表示します。ラベルと似ています。 |
| Radiobutton | ラジオボタンウィジェット;単一選択のボタン状態を表示します。 |
| Scale | スケールウィジェット;数値目盛りを表示し、出力する数値の範囲を限定します。 |
| Scrollbar | スクロールバーウィジェット;内容が表示領域を超える場合に使用します(リストボックスなど)。 |
| Text | テキストウィジェット;複数行のテキストを表示するために使用します。 |
| Toplevel | トップレベルウィジェット;独立したダイアログを提供するために使用します。Frameと似ています。 |
| Spinbox | スピンボックスウィジェット;Entryと似ていますが、入力範囲の値を指定できます。 |
| PanedWindow | PanedWindowはウィンドウのレイアウト管理用ウィジェットで、1つ以上の子ウィジェットを含めることができます。 |
| LabelFrame | LabelFrameはシンプルなコンテナウィジェットです。複雑なウィンドウレイアウトによく使用されます。 |
| tkMessageBox | アプリケーションのメッセージボックスを表示するために使用します。 |
標準属性
標準属性とは、すべてのウィジェットに共通する属性です。サイズ、フォント、色などです。
| 属性 | 説明 |
| Dimension | ウィジェットのサイズ; |
| Color | ウィジェットの色; |
| Font | ウィジェットのフォント; |
| Anchor | アンカー; |
| Relief | ウィジェットのスタイル; |
| Bitmap | ビットマップ; |
| Cursor | カーソル; |
ジオメトリ管理
Tkinterウィジェットには特定のジオメトリ管理メソッドがあり、ウィジェット領域全体の構成を管理します。以下はTkinterで公開されているジオメトリ管理クラスです:パック、グリッド、プレース
| ジオメトリメソッド | 説明 |
| pack() | パック; |
| grid() | グリッド; |
| place() | プレース; |