Tkinter チュートリアル - コンボボックス Combobox

胡金庫 2023年1月30日
  1. Python Tkinter コンボボックスの例
  2. Tkinter Combobox イベントバインディング
  3. Tkinter Combobox の動的な値の更新
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()

Tkinter チュートリアル Combobox 基本

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 の起動後に空を示し、ユーザーがコンボボックスの矢印をクリックした後、上記のように所定の月を表示します。

著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook