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 の起動後に空を示し、ユーザーがコンボボックスの矢印をクリックした後、上記のように所定の月を表示します。
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn