Tkinter で GUI を作る基本
Tk 8.5 では Tk テーマ付きウィジェット (Tk themed widgets) が導入され、より美しい UI が使えるようになりました。tkinter.ttk からテーマ付きウィジェットが使えます。Frame や Button など、多くのウィジェットは元のウィジェットと同じ名前であるため、次のようにモジュールをインポートすることで ttk. のプレフィクスなしでテーマ付きウィジェットが使えるようになります。
from tkinter import * from tkinter.ttk import *つまり、これによって ttk.Frame ではなく単に Frame と書けばテーマ付きのバージョンの Frame が使われるようになります。
ところが、およそ使い方は同じであるものの、プロパティの書き方など一部コードの互換性がないところがあります。このため当サイトでは、混乱を防ぐために ttk. というプレフィクスを付け、どちらのバージョンを使っているか明示するようにしています。
8行目で作成した Frame を親要素として、 Label (ラベル) を作成しています。
StringVar() で文字列型のグローバル変数を作成しています。この変数 t に、Entry で入力した文字がセットされます。
フレームを親要素として入力ボックスウィジェットである Entry ウィジェットを作成しています。このとき textvariable として指定した変数に、テキストボックスに入力した内容が自動的にセットされます。
フレームを親要素として Button (ボタン) を作成しています。ボタンに表示する文字は text 属性で指定します。 command 属性には、ボタンをクリックした時に実行される関数 (callable) を指定します。
ここではボタンを押した時には、 print() 関数を呼ぶだけですから、簡単にラムダ式で1行で済ませています。
ここまでで、 Frame 、 Label 、 Entry 、 Button といったウィジェットを、ウィジェットをルートの下にぶら下げた階層構造ができあがります。
Tinker のウィジェットを並べる
ウィジェットを配置するのは Tkinter のジオメトリマネージャ (Geometry Manager) が行います。
ウィジェットの pack() メソッドを呼ぶと、親要素の表示リストの中にウィジェットが追加されます。
# レイアウト frame1.pack() label1.pack(side=LEFT) entry1.pack(side=LEFT) button1.pack(side=LEFT)pack() メソッドに side パラメータを渡すことで、 親ウィジェットのどの向きのリストに追加されるか指定することができます。左から右に順番にウィジェットを追加するには、 side=LEFT とします。
side の指定を省略した場合は、親ウィジェットの上側 TOP に追加されます。
Tkinter ウィンドウの表示
ルート要素の mainloop() メソッドを呼ぶとウィンドウが表示されます。
# ウィンドウの表示開始 root.mainloop()以上、ここでは Tkinter を使った基本的な GUI の書き方について説明しました。
Python 開発環境- Python とは?
- 開発環境の準備
- Visual Studio Code で Python を使用する
- Virtualenv の使い方
- Python の IDLE の使い方
- Python シェルでプログラムを実行
- Python の書き方の基本ルール
- Python の The Zen of Python
- Python の数値 (Number)
- Python の Boolean
- Python の文字列
- Python の List
- Python の Tuple
- Python の Set
- Python の Dictionary
- Python の複素数型
- Python 文字列の書式指定とフォーマット
- Python の日付と時刻のフォーマット
- Python で文字をインクリメントする方法
- Python の (*) による List のアンパック
- Python プログラムでユーザーの入力を受取る
- Python の if 文
- Python の for 文による繰返し
- Python の while 文による繰返し
- Python の pass 文
- Python の関数
- Python の関数定義の基本
- Python の関数の引数
- Python で別ファイルに書いた関数を呼び出す方法
- Python で複数の戻り値を返す方法
- Python のラムダ式
- Python のクラス定義
- Python の例外
- Python 例外処理の基本 (try/except/finally)
- Python で自作の例外クラスを作る
- Python のコンテキストマネージャと with ブロック
- Python で現在のディレクトリを取得する
- Python で絶対パスを取得する
- Python でパスを結合する
- Python でパスを正規化する
- Python でファイルの書き込み
- Python でファイルの読み込み
- Python でファイルの存在確認をする
- Python でファイルをコピー
- Python でファイルを削除
- Python の正規表現
- Python 標準ライブラリ
- Tkinter のインストールとバージョン確認
- Tkinter で GUI を作る基本
- Tkinter Frame
- Tkinter Label
- Tkinter Button
- Tkinter Checkbutton
- Tkinter Radiobutton
- Tkinter Entry
- Tkinter Entry の入力検証
- Tkinter Combobox
- Tkinter Listbox
- Tkinter Scrollbar と Listbox
- Tkinter のウィンドウのリサイズと Sizegrip
- Tkinter Progressbar
- Tkinter Scale
- Tkinter Text
- Tkinter Spinbox
- Tkinter grid ジオメトリマネージャ
- Tkinter ファイルを開くダイアログ
- Tkinter ttk ウィジェットのスタイル設定
- Tkinter テーマ
- Matplotlib の使い方
- PyDrive で Google Drive を利用
- XML
- ctypes による C 関数呼出し
- wxPython による GUI
- Django のインストール
- Django の管理画面
- Django のフォームライブラリ