このページでは、Tkinter で利用可能な全ウィジェットの紹介を行っていきます。
Tkinter で GUI アプリが作成可能であることを知っていたとしても、利用可能なウィジェットが分からないと具体的にどんなアプリが開発可能かイメージが湧かないですよね…。
このページを読んでいただければ、Tkinter で利用可能な全ウィジェットの種類、および各ウィジェットの概要について理解していただくことができ、これによって Tkinter で開発可能なアプリのイメージが湧くようになると思います。また、このサイトでは、各ウィジェットの詳細に関する解説ページも公開しています。随時、それらのページへのリンクも紹介していきますので、各ウィジェットの詳細な使い方や設定の変更方法を知りたいというときに役立てていただければと思います。
このページで紹介するウィジェットには、ttk (テーマ付きウィジェット) のものは含まれていない点に注意してください
Contents
利用可能なウィジェット一覧
では、Tkinter で利用可能なウィジェットの一覧を示していきます。
利用可能なウィジェット名の一覧
まず、Tkinter で利用可能なウィジェット名の一覧を下記に示します。下記の通り、Tkinter では19種類のウィジェットが利用可能です。
- メインウィンドウ
- サブウィンドウ
- ボタン
- ラベル
- メッセージ
- エントリー
- テキストボックス
- スクロールバー
- スケール
- チェックボタン
- ラジオボタン
- キャンバス
- スピンボックス
- リストボックス
- フレーム
- ラベルフレーム
- メニュー
- メニューボタン
- ペインドウィンドウ
スポンサーリンク
利用可能なウィジェットの見た目
各ウィジェットを表示したときの見た目も示しておきたいと思います。
これらのウィジェットの中には、Windows と Mac とで見た目が異なるものもあるので、それぞれの場合の各ウィジェットの見た目を示していきます。
Windows におけるウィジェットの見た目
まず、Windows における各ウィジェットの見た目を下図に示します。
Mac におけるウィジェットの見た目
続いて、Mac における各ウィジェットの見た目を下図に示します。
全ウィジェットを表示するスクリプト
先ほど示した図の GUI アプリのスクリプト、すなわち全ウィジェットをウィンドウに配置する GUI アプリのスクリプトを下記に示しておきますので、参考にしてください。ただし、メニューボタン以外のボタンはクリックしても反応しませんし、各種ウィジェットの設定値を変更してもアプリの動作や設定には反映されないので注意してください。単に、ウィジェットを表示する例を示しているだけなので、この辺りについてはご了承いただければと思います。
import tkinter
# 各種ウィジェットに設定するフォント
font = ('', 18)
"""メインウィンドウ"""
main_window = tkinter.Tk()
main_window.title('メインウィンドウ')
main_window.geometry('700x400')
"""サブウィンドウ"""
sub_window = tkinter.Toplevel(main_window)
sub_window.title('サブウィンドウ')
sub_window.geometry('400x300')
"""ボタン"""
button = tkinter.Button(
main_window,
text='ボタン',
font=font
)
button.grid(column=0, row=0, padx=10, pady=10)
"""ラベル"""
label = tkinter.Label(
main_window,
text='TkinterでGUIアプリを開発',
font=font
)
label.grid(column=1, row=0, padx=10, pady=10)
"""メッセージ"""
message = tkinter.Message(
main_window,
text='TkinterでGUIをアプリを開発',
font=font
)
message.grid(column=1, row=1, padx=10, pady=10)
"""エントリー"""
entry = tkinter.Entry(
main_window,
font=font,
width=10
)
entry.grid(column=2, row=0, padx=10, pady=10)
"""テキストボックス"""
# スケールバーの位置調整用のフレーム
text_frame = tkinter.Frame(
main_window,
)
text_frame.grid(column=2, row=1)
textbox = tkinter.Text(
text_frame,
font=font,
width=10,
height=3,
wrap=tkinter.NONE
)
textbox.grid(column=0, row=0)
"""スクロールバー"""
# 水平方向のスクロールバー
xbar = tkinter.Scrollbar(
text_frame,
orient=tkinter.HORIZONTAL,
)
# 垂直方向のスクロールバー
ybar = tkinter.Scrollbar(
text_frame,
orient=tkinter.VERTICAL,
)
# スクロールバーの配置
xbar.grid(
column=0, row=1,
sticky=tkinter.E+tkinter.W
)
ybar.grid(
column=1, row=0,
sticky=tkinter.N+tkinter.S
)
# スライダー移動時に実行する関数の設定
xbar.config(
command=textbox.xview
)
ybar.config(
command=textbox.yview
)
# テキストボックススクロール時に実行する関数の設定
textbox.config(
xscrollcommand=xbar.set,
yscrollcommand=ybar.set
)
""""スケール"""
scale = tkinter.Scale(
main_window,
font=font,
orient=tkinter.HORIZONTAL
)
scale.grid(column=0, row=1, padx=10, pady=10)
"""フレーム"""
frame = tkinter.Frame(
main_window,
borderwidth=5,
relief=tkinter.RAISED,
)
frame.grid(column=0, row=3, padx=10, pady=10)
"""チェックボタン"""
check1 = tkinter.Checkbutton(
frame,
font=font,
text='設定1',
)
check1.pack(padx=10, pady=10)
check2 = tkinter.Checkbutton(
frame,
font=font,
text='設定2',
)
check2.pack(padx=10, pady=10)
"""ラベルフレーム"""
label_frame = tkinter.LabelFrame(
main_window,
font=font,
borderwidth=5,
text='設定3'
)
label_frame.grid(column=1, row=3, padx=10, pady=10)
"""ラジオボタン"""
# ラジオボタングループ化用のウィジェット変数
radio_var = tkinter.StringVar(main_window, value='3')
radio1 = tkinter.Radiobutton(
label_frame,
font=font,
text='選択肢1',
variable=radio_var,
value='1'
)
radio1.pack(padx=10, pady=10)
radio2 = tkinter.Radiobutton(
label_frame,
font=font,
text='選択肢2',
variable=radio_var,
value='2'
)
radio2.pack(padx=10, pady=10)
radio3 = tkinter.Radiobutton(
label_frame,
font=font,
text='選択肢3',
variable=radio_var,
value='3'
)
radio3.pack(padx=10, pady=10)
"""キャンバス"""
canvas = tkinter.Canvas(
main_window,
width=250,
height=150,
background='white'
)
canvas.grid(column=2, row=3, padx=10, pady=10)
# キャンバスへの図形の描画
canvas.create_oval(
10, 10, 90, 90,
fill='blue',
width=0
)
canvas.create_rectangle(
30, 110, 220, 130,
fill='red',
width=0
)
canvas.create_line(
100, 20, 200, 140,
fill='green',
width=10
)
"""メニュー"""
menu = tkinter.Menu(main_window, tearoff=False)
main_window.config(menu=menu)
file_menu = tkinter.Menu(menu, tearoff=False)
menu.add_cascade(label='ファイル', menu=file_menu)
edit_menu = tkinter.Menu(menu, tearoff=False)
menu.add_cascade(label='編集', menu=edit_menu)
file_menu.add_command(label='開く')
file_menu.add_command(label='編集')
edit_menu.add_command(label='取り消す')
edit_menu.add_command(label='やり直す')
"""スピンボックス"""
spinbox = tkinter.Spinbox(
sub_window,
font=font,
from_=0,
to=100,
width=5
)
spinbox.grid(column=0, row=0, padx=10, pady=10)
"""リストボックス"""
# リストボックスに表示する項目
setting_list = [
'選択肢A',
'選択肢B',
'選択肢C',
'選択肢D',
]
list_var = tkinter.StringVar(sub_window, value=setting_list)
listbox = tkinter.Listbox(
sub_window,
font=font,
listvariable=list_var,
height=len(setting_list),
width=10
)
listbox.grid(column=1, row=0, padx=10, pady=10)
"""メニューボタン"""
menu_button =tkinter.Menubutton(
sub_window,
text='メニュー',
font=font,
borderwidth=5,
relief=tkinter.RAISED
)
menu_button.grid(column=2, row=0, padx=10, pady=10)
# メニューボタンクリック時に表示するメニューウィジェット
sub_menu = tkinter.Menu(menu_button, tearoff=False)
file_menu = tkinter.Menu(sub_menu, tearoff=False)
sub_menu.add_cascade(label='ファイル', menu=file_menu)
edit_menu = tkinter.Menu(sub_menu, tearoff=False)
sub_menu.add_cascade(label='編集', menu=edit_menu)
file_menu.add_command(label='開く')
file_menu.add_command(label='編集')
edit_menu.add_command(label='取り消す')
edit_menu.add_command(label='やり直す')
# クリック時に表示するウィジェットの設定
menu_button.config(menu=sub_menu)
"""ペインドウィンドウ"""
paned_window = tkinter.PanedWindow(
sub_window,
background='gray',
sashwidth=10
)
paned_window.grid(column=0, columnspan=3, row=1, padx=10, pady=10)
# ペインドウィンドウに設定するウィジェット
sub_button = tkinter.Button(
sub_window,
text='button',
font=font,
height=2
)
paned_window.add(sub_button)
sub_entry = tkinter.Entry(
sub_window,
font=font
)
paned_window.add(sub_entry)
"""メインループ"""
main_window.mainloop()
メインウィンドウ
ここからは、各ウィジェットの概要について簡単に解説していきます。
まずは、メインウィンドウについて解説します。
メインウィンドウの見た目
メインウィンドウの見た目は下の図のようなものになります。
スポンサーリンク
メインウィンドウの役割
メインウィンドウは、アプリのメインとなるウィンドウになります。アプリそのものと考えても良いと思います。
Tkinter では、このウィンドウに他のウィジェットを配置していくことで、アプリを開発していくことになります。なので、Tkinter でアプリを開発するのであれば、必ずこのメインウィンドウを利用することになります。
メインウィンドウの使い方
メインウィンドウは Tkinter で定義される Tk
というクラスで実現されるウィジェットになります。Tkinter でアプリを開発する場合、この Tk
クラスのコンストラクタを実行してメインウィンドウを作成し、さらにアプリの起動の準備(ウィジェットの配置やイベントの設定など)が完了したらメインウィンドウにメインループを実行させる、というのが基本的なアプリの処理の流れとなります。
メインウインドウの詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:メインウィンドウを作成するまた、先ほどの説明に登場した “メインループ” に関しては下記で詳細を解説していますので、詳しく知りたい方は下記ページを参照して下さい。
【Python】tkinterのmainloopについて解説サブウィンドウ
次に、サブウィンドウについて解説していきます。
スポンサーリンク
サブウィンドウの見た目
サブウィンドウの見た目は下の図のようなものになります。メインウィンドウと同じ見た目で、設定変更等によって見た目を変化させることも可能です。
サブウィンドウの役割
サブウィンドウは、メインウィンドウ以外のウィンドウとなります。
サブウィンドウを利用することで、複数のウィンドウを持つアプリを開発することが可能です。もちろん、サブウィンドウにも、メインウィンドウ同様にウィジェットを配置することが可能です。
サブウィンドウの使い方
サブウィンドウは Tkinter で定義される Toplevel
というクラスで実現されるウィジェットになります。Toplevel
クラスのコンストラクタを実行すれば、メインウィンドウに加えてサブウィンドウが表示されるようになります。もちろん、複数のサブウィンドウを表示することも可能です。
サブウインドウの詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
【Tkinterの使い方】サブウィンドウ(Toplevel)の使い方スポンサーリンク
ボタン
次に、ボタンウィジェットについて解説していきます。
ボタンの見た目
ボタンウィジェットの見た目は下の図のようなものになります。
ボタンには文字列を表示することが可能で、この文字列によってボタンの用途をユーザーに示すことが可能です。
ボタンの役割
ボタンは、ユーザーからのクリック・押下操作を受け付けるウィジェットになります。ただ、クリック・押下を受け付けるだけではダメで、これらが行われた際に、そのボタンの用途に合わせた処理(関数やメソッド)が実行されるようにする必要があります。
スポンサーリンク
ボタンの使い方
ボタンは Tkinter で定義される Button
というクラスで実現されるウィジェットになります。Button
クラスのコンストラクタを実行してボタンウィジェットを作成し、そのボタンがクリックされた時に実行する関数・メソッドの登録を行い、さらにウィンドウへの配置を行う、というのがボタンを扱う基本的な流れとなります。
こういった、ボタンウィジェットの使い方の詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:ボタンウィジェット(Button)の使い方また、上記の説明の中で登場した “配置” に関しては下記ページで詳細を解説しています。基本的に、ウィンドウ以外のウィジェットを扱う場合はウィンドウへの配置が必要となりますので、是非ウィジェットの配置についても理解しておきましょう!
Tkinterの使い方:ウィジェットの配置(pack・grid・place)ラベル
次に、ラベルウィジェットについて解説していきます。
ラベルの見た目
ラベルウィジェットの見た目は下の図のようなものになります。
スポンサーリンク
ラベルの役割
ラベルは、ユーザーに情報を文字列で伝えることを役割とするウィジェットになります。
ユーザーにアプリの状態に伝えたり、アプリの使い方を伝えたり、ウィジェットの意味合いを伝えたりするときにラベルを利用します。
例えば、アプリでは、後述の エントリー の節で説明する「エントリー」により、ユーザーからの文字列入力を受け付けることが可能です。ですが、エントリーウィジェットを単に表示しているだけだと “そのウィジェットに何を入力すればよいのか” がユーザーには理解できない可能性があります。そんなときに、そのエントリーウィジェットの隣にラベルでウィジェットの意味合いを示すようにしてあげることで、ウィジェットに入力すべき内容をユーザーに伝えることができるようになります。
ラベルの使い方
ラベルは Tkinter で定義される Label
というクラスで実現されるウィジェットになります。Label
クラスのコンストラクタを実行してラベルウィジェットを作成し、そのラベルに表示する文字列の設定を行い、さらにウィンドウへの配置を行う、というのがラベルを扱う基本的な流れとなります。
また、何らかのタイミングでユーザーに伝える内容を変更する場合は、ラベルに表示する文字列の変更も必要となります。
こういった、ラベルウィジェットの使い方の詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:ボタンウィジェット(Button)の使い方メッセージ
次に、メッセージウィジェットについて解説していきます。
スポンサーリンク
メッセージの見た目
メッセージウィジェットの見た目は下の図のようなものになります。
メッセージの役割
メッセージは、ラベル同様に、ユーザーに情報を文字列で伝えることを役割とするウィジェットになります。
ただし、メッセージウィジェットは、基本的には「複数行の文字列」を表示する時に利用します。なので、長い文章等を表示する時には、ラベルウィジェットではなくメッセージウィジェットを利用することになります。逆に、ラベルウィジェットは1行の文章や単語・タイトル等を表示する時に利用することが多いです。
メッセージの使い方
メッセージは Tkinter で定義される Message
というクラスで実現されるウィジェットになります。Message
クラスのコンストラクタを実行してメッセージウィジェットを作成し、そのメッセージウィジェットに表示する文字列の設定を行い、さらにウィンドウへの配置を行う、というのがメッセージウィジェットを扱う基本的な流れとなります。
こういった、メッセージウィジェットの使い方の詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:メッセージウィジェット(Message)の使い方スポンサーリンク
エントリー
次に、エントリージウィジェットについて解説していきます。
エントリーの見た目
エントリーウィジェットの見た目は下の図のようなものになります。エントリーは、いわゆる文字列の入力欄です。
エントリーの役割
エントリーは、ユーザーからの文字列入力を受け付けることを役割とするウィジェットになります。ただし、入力可能なのは1行の文字列のみとなります。複数行の文字列の入力受付を行いたいのであれば、次に説明するテキストボックスを利用してください。
アプリを開発する上では、こういったユーザーから入力された文字列を「活用する」という点も重要となります。例えば、アプリでユーザー登録を行うのであれば、エントリーに入力された文字列を取得してデータベース等に保存するというようなことも必要となりますし、エントリーでファイルパスの入力受付を行うような場合は、データを保存する際に、そのエントリーに入力されたパスを取得し、そのパスのファイルにデータを書き込むような処理も実現する必要があります。
エントリーウィジェットだけでなく、ユーザーからの入力や設定を受け付けるウィジェットでは、その入力結果や設定結果を「活用する」という点もアプリ開発には重要となりますので、この点は覚えておきましょう。もし、活用しないのであれば、それらの入力や設定を受け付けるウィジェットはアプリには不要ということになります。
また、活用するためには、まずユーザーからの入力結果や設定結果を取得する必要があります。したがって、ユーザーからの入力や設定を受け付けるウィジェットを利用するのであれば、そのウィジェットから「入力結果・設定結果を取得する方法」もしっかり理解しておきましょう。
スポンサーリンク
エントリーの使い方
エントリーは Tkinter で定義される Entry
というクラスで実現されるウィジェットになります。Entry
クラスのコンストラクタを実行してエントリーウィジェットを作成し、ウィンドウへの配置を行う、というのがエントリーウィジェットを扱う基本的な流れとなります。
また、そのエントリーにはユーザーから文字列が入力されることになりますので、前述の通り、そのエントリーに入力された文字列を活用することが必要となります。そして、そのためにはエントリーから入力済みの文字列を取得することが必要となりますので、エントリーからの文字列の取得方法に関してもしっかり理解しておく必要があります。
こういった、メッセージウィジェットの使い方の詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:エントリー(Entry)の使い方テキストボックス
次に、テキストボックス(テキストウィジェット)について解説していきます。
テキストボックスの見た目
テキストボックスの見た目は下の図のようなものになります。
スポンサーリンク
テキストボックスの役割
テキストボックスは、エントリー同様にユーザーからの文字列入力を受け付けることを役割とするウィジェットになります。ただし、テキストボックスでは、エントリーとは異なり複数行の文字列入力が可能です。なので、長文の入力受付を行いたい場合は、エントリーではなくテキストボックスを利用します。
例えば、ユーザー登録を行うアプリを開発するのであれば、名前やメールアドレスなどはエントリーで入力受付を行い、自己紹介文のような長文の入力受付はテキストボックスで行うことになります。
また、Windows のメモ帳のような簡単なテキストエディターであればテキストボックスを利用して開発することができると思いますので、メモ帳の開発に挑戦してみても面白いと思います!
テキストボックスの使い方
テキストボックスは Tkinter で定義される Text
というクラスで実現されるウィジェットになります。Text
クラスのコンストラクタを実行してテキストウィジェットを作成し、ウィンドウへの配置を行う、というのがテキストウィジェットを扱う基本的な流れとなります。
テキストウィジェットはエントリーウィジェットに比べると扱い方の難易度が少し高いです。テキストウィジェットの使い方の詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:テキストウィジェット(Text)の使い方スクロールバー
次に、スクロールバーについて解説していきます。
スポンサーリンク
スクロールバーの見た目
スクロールバーの見た目は下の図のようなものになります。
スクロールバーの役割
スクロールバーは、単体ではなく、他のウィジェット(テキストボックスやキャンバスなど)と併用するウィジェットであり、それらの併用するウィジェットの表示領域をスクロールさせることを役割とするウィジェットになります。このスクロールバー内部のバーを移動させることで、併用するウィジェットの表示領域をスクロールさせることができます。
アプリに配置するウィジェットには当然サイズ的な制限がありますが、このスクロールバーを利用することで、ウィジェットのサイズ以上の大きさの画像や図形・文字列を各種ウィジェットで扱うことが可能となります。
スクロールバーの使い方
スクロールバーは Tkinter で定義される Scrollbar
というクラスで実現されるウィジェットになります。スクロールバーの場合、Scrollbar
クラスのコンストラクタを実行すればウィジェットが作成できるという点は他の種類のウィジェットと共通になりますが、それに加えて併用するウィジェットの表示領域をスクロールバーでスクロールできるようにするための設定や、併用するウィジェットの右や下への配置が必要となります。
他のウィジェットに比べて、スクロールバーの使い方は難易度が高いと思います。ただ、スクロールバーを利用するときの実装内容は、基本的に開発するアプリに関わらず同様となるので、一度スクロールバーを扱うアプリを開発してやれば、スクロールバーに関する処理はコピペで使い回すことも可能です。
スクロールバーの使い方の詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:スクロールバー(Scrollbar)の使い方スポンサーリンク
キャンバス
次に、キャンバスについて解説していきます。
キャンバスの見た目
キャンバスウィジェットの見た目は下の図のようなものになります(キャンバス内には簡単な図形を描画しています)。
キャンバスの役割
キャンバスは、図形や画像等の表示を役割とするウィジェットになります。
キャンバスには、楕円や長方形といった図形を描画して表示することもできますし、特定の画像を描画して表示するようなことも可能です。
さらに、描画した図形や画像に対する操作を行うことも可能です。例えば、描画済みの特定の図形や画像を非表示にしたり、ドラッグ&ドロップ操作で移動したりするようなことが可能です。また、描画済みの特定の図形や画像がクリックされた時に実行するイベントハンドラを設定するようなことも可能です。
このように、キャンバスウィジェットで実現できることは非常に多いです。そして、実現できることが多い分、キャンバスウィジェットは他のウィジェットに比べて使い方が若干複雑です。ですが、使いこなすことができれば、開発可能なアプリの幅も一気に広がることになると思います。
スポンサーリンク
キャンバスの使い方
キャンバスは Tkinter で定義される Canavs
というクラスで実現されるウィジェットになります。Canvas
クラスのコンストラクタを実行してキャンバスウィジェットを作成し、ウィンドウへの配置を行う、というのがキャンバスウィジェットを扱う基本的な流れとなります。
ただし、これだけだと単に真っ白なキャンバスがウィンドウに表示されるだけなので、キャンバスへの図形や画像の描画に関しても必要となります。また、アプリによっては、それらの描画済みの図形・画像に対する操作を実現するようなことも必要となります。
キャンバスの使い方の詳細に関しては下記の3つのページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。キャンバスは実現できることも多いので、解説ページも3つに分けて公開しています。
Tkinterの使い方:キャンバスウィジェットの作り方 Tkinterの使い方:Canvasクラスで図形を描画する Tkinterの使い方:Canvasクラスで描画した図形を操作するスケール
次に、スケールウィジェットについて解説していきます。
スケールの見た目
スケールウィジェットの見た目は下の図のようなものになります。スライダーはマウス操作で移動させることが可能です。
スポンサーリンク
スケールの役割
スケールは、ユーザーからの値の指定をスライダーの移動によって受け付けるウィジェットになります。
特に、アプリの「何らかの度合い」の設定を変化させるときに利用することの多いウィジェットになると思います。スライダーの移動によって、スケールウィジェットに設定される値が変化することになりますので、その設定された値を取得してアプリの設定に反映するようにすれば、ユーザーがスケールウィジェットの操作でアプリの設定を変更することができるようになります。
スケールウィジェットは、特に大雑把&感覚的にアプリの設定を変更できるようにしたい時に利用するウィジェットになると思います。例えば、音量調節・画像の明るさ調節・図形の透明度設定などでは、スケールウィジェットが用いられることが多いです。これらの設定は、設定値そのものよりも、実際の音の大きさや見た目などの聴覚的・視覚的な感覚の方が重要ですよね。こういった、感覚的にアプリの設定を変更するためのウィジェットとして、スケールウィジェットが活躍します。
スケールの使い方
スケールは Tkinter で定義される Scale
というクラスで実現されるウィジェットになります。Scale
クラスのコンストラクタを実行してスケールウィジェットを作成し、ウィンドウへの配置を行う、というのがスケールウィジェットを扱う基本的な流れとなります。
また、スケールウィジェットに設定された値(スライダーの位置)に応じてアプリの設定・動作を変更させるためには、スケールウィジェットに設定された値の取得や、ユーザーからスライダーの移動操作が行われた時に実行する関数・メソッドの設定が必要となります。
このあたりも含めて、スケールウィジェットの使い方の詳細を下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:スケール(Scale)の使い方チェックボタン
次に、チェックボタンウィジェットについて解説していきます。
スポンサーリンク
チェックボタンの見た目
チェックボタンの見た目は下の図のようなものになります。左側の四角をクリックすることで、チェックの ON / OFF を切り替えることが可能です。
チェックボタンの役割
チェックボタンは、ユーザーからのチェックの ON / OFF の指定を受け付けるウィジェットになります。チェックボタンは、チェックボックスとも呼ばれます。
このチェックボタンに関しても、アプリの設定を変更する時に利用することの多いウィジェットになると思います。何らかの機能の ON / OFF をユーザーに選択してもらいたいような場合に、チェックボタンウィジェットを利用することが多いです。
また、ユーザーに Yes / No を選択してもらいたいときにも利用することの多いウィジェットになります。例えば、サービスのユーザー登録画面では、メールの配信を希望するかどうかをチェックボタンの ON / OFF で選択できるようになっていることも多いと思います。
このように、ON / OFF・Yes / No などの、肯定 or 否定のどちらか一方のみをユーザーに選択してもらいたいようなときにチェックボックスが活躍します。
チェックボタンの使い方
チェックボタンは Tkinter で定義される Checkbutton
というクラスで実現されるウィジェットになります。Checkbutton
クラスのコンストラクタを実行してチェックボタンウィジェットを作成し、チェックボタンの項目名を設定し、さらにウィンドウへの配置を行う、というのがチェックボタンウィジェットを扱う基本的な流れとなります。
また、チェックボタンウィジェットに関しても、チェックの ON / OFF の状態を取得することが必要となります。
チェックボタンウィジェットの使い方の詳細を下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:チェックボタン(Checkbutton)の使い方スポンサーリンク
ラジオボタン
次に、ラジオボタンウィジェットについて解説していきます。
ラジオボタンの見た目
ラジオボタンウィジェットの見た目は下の図のようなものになります。基本的に、複数のラジオボタンが1つのグループとして扱われ、そのグループ内の1つのみが選択できるようになっています。また、選択されている項目のみ左側の白丸の見た目が変化するようになっており、選択中の項目が視覚的に分かるようになっています。
ラジオボタンの役割
ラジオボタンは、複数の選択肢をユーザーに提示し、ユーザーからの選択を受け付けることを役割とするウィジェットになります。
先ほど紹介したチェックボタンに関しては、1つの項目に対して ON / OFF 等の肯定 or 否定のどちらか一方をユーザーに選択してもらうというウィジェットになります。それに対し、ラジオボタンは複数の項目を示し、その中から1つをユーザーに選択してもらうウィジェットとなります。このラジオボタンでは、3つ以上の項目から1つを選択してもらうようなことも可能です。
例えばアンケートなどで、複数の項目を表示し、その中から1つをユーザーに選択してもらうような場合はラジオボタンが利用されていることが多いです。
スポンサーリンク
ラジオボタンの使い方
ラジオボタンは Tkinter で定義される Radiobutton
というクラスで実現されるウィジェットになります。Radiobutton
クラスのコンストラクタを実行してラジオボタンウィジェットを作成し、ラジオボタンの項目名を設定し、さらにウィンドウへの配置を行う、というのがラジオボタンウィジェットを扱う基本的な流れとなります。
ただし、ラジオボタンの場合は単独で利用するのではなく、複数のラジオボタンウィジェットを作成し、それらをグループ化して扱うことになります。グループ化することで、そのグループ内では選択可能なラジオボタンの個数が1つのみとなります。逆に、グループ化しなければ、それらのラジオボタンは同時に選択可能となってしまいます。
したがって、ラジオボタンを利用する場合、複数のラジオボタンをグループ化する方法や、選択中のラジオボタンの判別方法も知っておく必要があります。結論だけ述べておくと、これらは下記ページで解説しているウィジェット変数を利用することで簡単に実現することが可能です。
Tkinterの使い方:ウィジェット変数について解説【StringVar・BooleanVar・IntVar・DoubleVar】このあたりも含めて、ラジオボタンウィジェットの使い方の詳細を下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:ラジオボタン(Radiobutton)の使い方スピンボックス
次に、スピンボックスウィジェットについて解説していきます。
スピンボックスの見た目
スピンボックスウィジェットの見た目は下の図のようなものになります。前述で紹介したエントリーウィジェットに対し、スピンボタン(上ボタンと下ボタン)が追加された見た目のウィジェットとなります。
スポンサーリンク
スピンボックスの役割
スピンボックスは、ユーザーからの数値の入力の受付を役割とするウィジェットになります。
エントリー で紹介したエントリーウィジェットでも数値の入力受付を行うことは可能ですが、エントリーウィジェットの場合は直接キーボードで数値を入力する必要があります。それに対し、スピンボックスの場合、直接キーボードで数値を入力することも可能ですし、さらにスピンボックスのクリックによって入力されている値を増減させることも可能です。なので、少しずつ値を増減させながら設定値を調整したいような場合は、スピンボックスの方が使いやすいです。
スピンボックスの使い方
スピンボックスは Tkinter で定義される Spinbox
というクラスで実現されるウィジェットになります。Spinbox
クラスのコンストラクタを実行してスピンボックスウィジェットを作成し、ウィンドウへの配置を行う、というのがスピンボックスウィジェットを扱う基本的な流れとなります。
また、スピンボックスでは、スピンボタンがクリックされた時に増減する値の幅や、スピンボックスに入力可能な値の上限・下限等も設定可能です。
スピンボックスウィジェットの使い方の詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:スピンボックス(Spinbox)の使い方リストボックス
次に、リストボックスウィジェットについて解説していきます。
スポンサーリンク
リストボックスの見た目
リストボックスウィジェットの見た目は下の図のようなものになります。ボックス内に表示されているのは選択肢であり、これらの選択肢の中から1つもしくは複数の項目が選択可能となっています。
リストボックスの役割
リストボックスは、複数の選択肢をユーザーに提示し、ユーザーからの選択を受け付けることを役割とするウィジェットです。
見た目は大きく異なりますが、役割としてはラジオボタンに似ています。ただし、リストボックスの場合は、同時に選択可能な項目数を複数とすることが可能です。なので、一度に複数の項目を選択できた方が便利な場合は、リストボックスを利用することになります。
リストボックスの使い方
リストボックスは Tkinter で定義される Listbox
というクラスで実現されるウィジェットになります。Listbox
クラスのコンストラクタを実行してリストボックスウィジェットを作成し、リストボックスに表示される項目の設定を行い、ウィンドウへの配置を行う、というのがリストボックスウィジェットを扱う基本的な流れとなります。
また、リストボックスでは、リストボックスに表示される項目を一度に選択可能な個数(1つのみ、複数等)を設定することも可能です。
リストボックスウィジェットの使い方の詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:リストボックス(Listbox)の使い方スポンサーリンク
フレーム
次に、フレームウィジェットについて解説していきます。
フレームの見た目
フレームウィジェットの見た目は下の図のようなものになります。下図ではフレームの見た目の設定を変更しているのでフレームが存在することが視覚的に確認できますが、デフォルト設定だと、フレームは背景と一体化していて視覚的には存在が分からないようになっています。
フレームの役割
フレームは、少し特殊なウィジェットで、複数のウィジェットを取りまとめる・グループ化することを役割とするウィジェットです。
フレームによって複数のウィジェットをグループ化することで、それらのウィジェットを一括して非表示・表示したりすることが可能となります。また、複数のウィジェットをグループ化することで、グループ単位で部品化し、異なるアプリ間でのグループ単位での使い回し(再利用)が可能となります。そして、これによってアプリの開発効率が向上します。
さらに、ウィジェットのレイアウトがフレーム内で完結するので、フレームを利用することで、ウィジェットのレイアウトが容易になるというメリットもあります。
スポンサーリンク
フレームの使い方
フレームは Tkinter で定義される Frame
というクラスで実現されるウィジェットになります。フレームに関しても、Frame
クラスのコンストラクタを実行してフレームウィジェットを作成し、さらにウィンドウへの配置を行うことが必要となります。さらに、フレームを利用する場合は、そのフレームに対して他のウィジェットを配置することも必要となります。これらの配置されたウィジェットが、フレームによってグループ化されることになります。
フレームウィジェットの使い方の詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:フレームウィジェット(Frame)の使い方ラベルフレーム
次に、ラベルフレームウィジェットについて解説していきます。
ラベルフレームの見た目
ラベルフレームウィジェットの見た目は下の図のようなものになります。前述の通り、フレームの場合はデフォルト設定では画面上に表示されないようになっていますが、ラベルフレームの場合はデフォルト設定でも枠が表示され、さらにラベルも表示されるので、ウィジェットの存在を視覚的に確認することができます。
スポンサーリンク
ラベルフレームの役割
ラベルフレームは、フレームと役割は同じで、複数のウィジェットを取りまとめる・グループ化することを役割とするウィジェットです。
さらに、フレームに対してラベルが追加されたウィジェットであり、このラベルで、フレーム内に存在するウィジェットの意味合い・グループの意味合いを示すことも可能です。
このラベルが必要であればラベルフレームを利用すればよいですし、ラベルが不要であればフレームを利用すればよいと思います。
ラベルフレームの使い方
基本的には、使い方もフレームと同様です。ただし、ラベルフレームを実現するクラスは LabelFrame
となりますので、ラベルフレームを作成するためには LabelFrame
のコンストラクタを実行する必要があります。また、ラベルに表示する文字列の設定も必要となります。
ラベルフレームウィジェットの使い方の詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:ラベルフレームウィジェット(LabelFrame)の使い方メニュー
次に、メニューウィジェットについて解説していきます。
スポンサーリンク
メニューの見た目
メニューウィジェットの見た目は下の図のようなものになります。Windows と Mac の場合で表示される位置が異なるので注意してください。メニューウィジェットは、Windows の場合はアプリ内に表示され、Mac の場合は PC 画面の上側に表示されるようになっています。
メニューの役割
メニューは、アプリのメニューバーを実現するウィジェットです。
一般的なアプリにおいてもメニューバーが存在するものが多いと思います。Tkinter で開発するアプリにメニューバーを設置したい場合は、このメニューウィジェットを利用します。メニューウィジェットを利用することで、複数の階層を持つメニューバーも実現可能です。
メニューの使い方
メニューの使い方は他のウィジェットに比べると特殊です。メニューウィジェット自体は、他のウィジェット同様に、メニューを実現するクラスである Menu
のコンストラクタを実行することで作成することが可能です。
ただし、作成直後は空のメニューとなっているため、実現したいメニューバーに合わせてメニューアイテム等の追加が必要となります。また、メニューバーをウィンドウに表示するためには、ウィンドウの menu
オプションに、作成したメニューウィジェットをセットするような処理も必要となります。
このあたりも含めて、メニューウィジェットの使い方の詳細を下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:メニュー(Menu)の使い方スポンサーリンク
メニューボタン
次に、メニューボタンウィジェットについて解説していきます。
メニューボタンの見た目
メニューボタンウィジェットの見た目は下の図のようなものになります。クリックすると、メニューが表示されるようになっています。
メニューボタンの役割
メニューボタンは、メニューを表示するためのボタンウィジェットになります。
ボタン で紹介したボタンウィジェットは、クリックされたときに実行する関数やメソッドを自由に設定することの可能な汎用性の高いウィジェットになります。それに対し、メニューボタンウィジェットは、クリックされた時に、先ほど紹介したメニューウィジェットを表示することに特化したウィジェットとなります。
メニューバーと異なり、メニューを表示するボタンの位置を自由に決められるというメリットはありますが、使いどころは少ないのではないかと思います。
スポンサーリンク
メニューボタンの使い方
メニューボタンは Tkinter で定義される Menubutton
というクラスで実現されるウィジェットになります。Menubutton
クラスのコンストラクタを実行してメニューボタンウィジェットを作成し、表示するメニューの設定を行い、さらにウィンドウへの配置を行う、というのがメニューボタンウィジェットを扱う基本的な流れとなります。
メニューボタンのクリックによって表示されるメニューの実体は、メニュー で紹介したメニューウィジェットになります。そのため、メニューボタンを使いこなすためには、メニューウィジェットの使い方も理解しておく必要があります。
メニューボタンウィジェットの使い方の詳細に関しては下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
【Tkinterの使い方】メニューボタンウィジェット(Menubutton)の使い方ペインドウィンドウ
最後に、ペインドウィンドウウィジェットについて解説していきます。
ペインドウィンドウの見た目
ペインドウィンドウの見た目は下の図のようなものになります。中央に存在する太枠はサッシと呼ばれ、サッシの両隣に他のウィジェットを設置することが可能です。
スポンサーリンク
ペインドウィンドウの役割
ペインドウィンドウは、ユーザーへウィジェットのサイズ変更の手段を提供することを役割とするウィジェットです。
ペインドウィンドウのサッシはマウス操作でスライド可能で、サッシをスライドさせることで、サッシの両隣のウィジェットのサイズが変化するようになっています。
ペインドウィンドウの使い方
ペインドウィンドウは Tkinter で定義される PanedWindow
というクラスで実現されるウィジェットになります。ペインドウィンドウの表示自体に関しては、他のウィジェット同様に、PanedWindow
クラスのコンストラクタを実行し、さらにウィンドウへの配置を行うことで実現できます。
ただし、ペインドウィンドウの特徴は、他のウィジェットのサイズ変更が可能であるという点にあります。そして、ペインドウィンドウでウィジェットのサイズを変更できるようにするためには、そのサイズ変更の対象となるウィジェットをペインドウィンドウに設置(追加)する必要があります。
このあたりも含めて、ペインドウィンドウウィジェットの使い方の詳細を下記ページで解説していますので、詳しく知りたい方は下記ページを参照して下さい。
Tkinterの使い方:ペインドウィンドウ(PanedWindow)の使い方まとめ
このページでは、Tkinder で利用可能な全19種類のウィジェットの一覧を示し、さらに各ウィジェットの概要について解説しました!
ザーッと説明しましたが、Tkinter で利用可能なウィジェットや、各種ウィジェットの役割が理解でき、さらには Tkinter で開発可能なアプリのイメージも湧くようになったのではないでしょうか?
各ウィジェットの概要の解説の中では、各ウィジェットの詳細に対する解説ページへのリンクも示していますので、是非、これらのページを活用しながら GUI アプリの開発を楽しんでいただければと思います!