Tkinter チュートリアル - コンボボックス Combobox
Tkinter Combobox は、ユーザーが選択できるドロップダウンリストです。これは、Entry
ウィジェットと drop-down
ウィジェットの組み合わせです。左側の矢印をクリックすると、すべてのオプションを示すドロップダウンメニューが表示され、クリックすると現在の Entry
内容が置き換えられます。
Python Tkinter コンボボックスの例
import tkinter as tk
from tkinter import ttk
app = tk.Tk()
app.geometry("200x100")
labelTop = tk.Label(app, text="Choose your favourite month")
labelTop.grid(column=0, row=0)
comboExample = ttk.Combobox(app, values=["January", "February", "March", "April"])
pprint(dict(comboExample))
comboExample.grid(column=0, row=1)
comboExample.current(1)
print(comboExample.current(), comboExample.get())
app.mainloop()
from tkinter import ttk
Tkinter コンボボックスウィジェットは Tkinter の ttk
モジュールに含まれているため、このウィジェットを使用するにはこのモジュールをインポートする必要があります。
comboExample = ttk.Combobox(app, values=["January", "February", "March", "April"])
Tkinter コンボボックスウィジェットインスタンスを作成し、ドロップダウンリストに表示される値も割り当てます。
comboExample.current(1)
通常、コンボボックスに表示されるデフォルトのアイテムは、値リストの最初の要素です。current(index)
メソッドを使用して任意の要素に変更することもできます。
print(comboExample.current(), comboExample.get())
また current()
、現在選択されている要素のインデックス get()
を取得し、メソッドを使用して要素自体を取得することもできます。
Tkinter Combobox イベントバインディング
コンボボックスのコールバック関数のバインディングは、前の章で紹介したウィジェットとは異なります。bind()
method は、ユーザーがドロップダウンリストで要素を選択したときにコールバック関数を combobox 仮想イベントにバインドする方法です。
Tkinter Combobox_Virtual Event Binding.py
import tkinter as tk
from tkinter import ttk
def callbackFunc(event):
print("New Element Selected")
app = tk.Tk()
app.geometry("200x100")
labelTop = tk.Label(app, text="Choose your favourite month")
labelTop.grid(column=0, row=0)
comboExample = ttk.Combobox(app, values=["January", "February", "March", "April"])
comboExample.grid(column=0, row=1)
comboExample.current(1)
comboExample.bind("<<ComboboxSelected>>", callbackFunc)
app.mainloop()
def callbackFunc(event):
print("New Element Selected")
これは、リストから要素を選択するたびに定義されるコールバック関数です。
注意
event
引き渡し引数としてスキップされない、コンボボックス仮想イベントから渡される
comboExample.bind("<<ComboboxSelected>>", callbackFunc)
仮想イベント <>
をコールバック関数にバインドします。
リストから新しい要素を選択するたびに、出力され New Element Selected
ます。
Tkinter Combobox の動的な値の更新
Tkinter コンボボックスの選択肢のリストは、選択肢 postcommand
のポップダウンリストを表示します。前に特定の機能を実行するオプションで動的に更新できます。
import tkinter as tk
from tkinter import ttk
def callbackFunc(event):
print("New Element Selected")
app = tk.Tk()
app.geometry("200x100")
def changeMonth():
comboExample["values"] = ["July", "August", "September", "October"]
labelTop = tk.Label(app, text="Choose your favourite month")
labelTop.grid(column=0, row=0)
comboExample = ttk.Combobox(
app, values=["January", "February", "March", "April"], postcommand=changeMonth
)
comboExample.grid(column=0, row=1)
app.mainloop()
この changeMonth
関数は、選択肢のコンボボックスリストを次のように変更します。
["July", "August", "September", "October"]
コンボボックスは、GUI の起動後に空を示し、ユーザーがコンボボックスの矢印をクリックした後、上記のように所定の月を表示します。