こんにちは!ゆーや(@yuyamanm118712)です。
こちらのページでは完全独学でWebプログラマとなった私が
デスクトップアプリには必須!!Tkinterでプルダウン(ttk.Combobox)を表示する方法をご紹介します!
GUIアプリにプルダウンが必要な場面は多いです!
最後までじっくりと読んで、一緒に学習にしていきましょう。
なお、ご指摘・ご質問はTwitter(@yuyamanm118712)のDMまでよろしくお願いします。
アプリ制作楽しいですよね!
そんなプログラミングに楽しさを覚えたあなた!
勉強し始めて、IT業界に興味があるけど、自信がない。
僕も同じでした。なので、一人でコツコツ、1年間も独学で勉強…
そのあと、一人で転職活動…
心細かったのを覚えています…
しかし、時代は変わり、
プログラミングを学び、転職をサポートしてくれるスクールがあります!
その名も…
初心者から経験者まで対応できる300以上の講座ラインナップで、スキルアップを目指す方に最適!プロ講師による丁寧な「個人レッスン」で、あなたに合わせた指導を受けられます。
- オンライン or 対面で選べる受講スタイル:あなたのライフスタイルに合わせて柔軟に受講可能!
- 実践重視のカリキュラム:現場経験豊富な講師陣が指導。学んだスキルをそのまま活かせる即戦力を養成。
- 年間1500社の企業研修実績で、ビジネスシーンに即した指導内容が魅力!
就職・転職サポートも充実し、受講中はもちろん卒業後も安心。まずは無料体験で、その質の高さを体感してください!
「完全独学Python」で学習しているあなたなら大丈夫!
僕みたいにリモートワークで自由な生活を手に入れよう!
まずは無料体験・カウンセリングを受けてみよう!
もちろん、Pythonコースもあるよ!
この記事を読むと
- Tkinterでプルダウンが作成できる!
- TkinterでComboboxの基本的な使い方について理解できる!
- TkinterでComboboxのオプションについて理解できる!
ttk.Comboboxとは
TkinterのComboboxは、ユーザーが選択可能なプルダウン(ドロップダウン)リストを提供するウィジェットです!
このウィジェットはtkinter.ttkモジュールから提供されており、特定の選択肢から選ぶ場合に非常に便利です!
この記事では、Comboboxの基本的な使い方やオプションをサンプルコードとともに詳しく解説します!
ttkの基本的な使い方は以下の記事を見てね!
ttk.Comboboxの基本
ttk.Combobox作成までのサンプルコード
import tkinter as tk
from tkinter import ttk
# メインウィンドウの作成
root = tk.Tk()
root.title("Combobox-完全独学Python")
root.geometry("300x200")
# Comboboxの作成
options = ["Option 1", "Option 2", "Option 3"]
combobox = ttk.Combobox(root, values=options)
combobox.pack(padx=10, pady=10)
# メインループの実行
root.mainloop()
たったの3行でプルダウンが表示されたね!
ここからComboboxの詳しい使い方を紹介していくよ!
ttk.Comboboxのオプション
選択肢のリストを指定(values)
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Combobox- valuesオプション")
root.geometry("300x200")
# Comboboxの作成
options = ["Option A", "Option B", "Option C"]
combobox = ttk.Combobox(root, values=options)
combobox.pack(padx=10, pady=10)
root.mainloop()
valuesに渡すリストの中身を変えると、選択肢が変更されることが分かったね!
ちなみにリストでなく、タプルでも動くので覚えておこう!
コンボボックスの状態を指定(state)
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Combobox- stateオプション")
root.geometry("300x200")
# Comboboxの作成
options = ["Option 1", "Option 2", "Option 3"]
combobox = ttk.Combobox(root, values=options, state="readonly")
combobox.pack(padx=10, pady=10)
root.mainloop()
stateを「readonly」にすると、プルダウンに文字を書き込めなくなるよ!(これが普通な気もするけど…)ほかにも「normal(書き込める )」「disabled(操作不可)」もあるので、いろいろ変えて試してみてね!
コンボボックスの表示幅を文字数で指定(width)
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Combobox- widthオプション")
root.geometry("300x200")
# Comboboxの作成(幅5文字分)
options = ["Option 1", "Option 2", "Option 3"]
combobox = ttk.Combobox(root, values=options, width=5)
combobox.pack(padx=10, pady=10)
root.mainloop()
コンボボックスが表示される直前に呼び出されるコールバック関数を指定(postcommand)
import tkinter as tk
from tkinter import ttk
def update_options():
new_options = ["Updated 1", "Updated 2", "Updated 3"]
combobox['values'] = new_options
root = tk.Tk()
root.title("Combobox- postcommandオプション")
root.geometry("300x200")
# Comboboxの作成
options = ["Option 1", "Option 2", "Option 3"]
combobox = ttk.Combobox(root, values=options, postcommand=update_options)
combobox.pack(padx=10, pady=10)
root.mainloop()
コンボボックスの中身がoptionsではなく、new_optionsになっていることから
直前にupdate_optionsが呼び出されていることがわかるね!
リストの中身を作成する関数をここで呼び出すといいかも!
選択された値を保持(tk.StringVar)
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Combobox- textvariableオプション")
root.geometry("300x200")
# 選択された値を保持する変数
selected_value = tk.StringVar()
# Comboboxの作成
options = ["Option 1", "Option 2", "Option 3"]
combobox = ttk.Combobox(root, values=options, textvariable=selected_value)
combobox.pack(padx=10, pady=10)
# 選択された値を表示するためのラベル
selected_label = ttk.Label(root, text="Selected: ")
selected_label.pack(padx=10, pady=10)
def show_selected():
selected_label.config(text=f"Selected: {selected_value.get()}")
# 値を表示するボタンの作成
show_button = ttk.Button(root, text="Show Selected", command=show_selected)
show_button.pack(padx=10, pady=10)
root.mainloop()
こちらはたびたび出てくるStringVar!
値の保持はコイツに任せましょう!
(StringVarオブジェクト).get()で値が取得できるよ!
ちなみにcombobox.get()でも取得はできる!
選択時のイベント発火(bind)
import tkinter as tk
from tkinter import ttk
def on_combobox_selected(event):
selected_value = combobox.get()
label.config(text=f"Selected: {selected_value}")
root = tk.Tk()
root.title("Combobox-選択変更イベント")
root.geometry("300x200")
# Comboboxの作成
options = ["Option 1", "Option 2", "Option 3"]
combobox = ttk.Combobox(root, values=options)
combobox.pack(padx=10, pady=10)
# ラベルの作成
label = ttk.Label(root, text="Selected: ")
label.pack(padx=10, pady=10)
# Comboboxの選択変更イベントをバインド
combobox.bind("<<ComboboxSelected>>", on_combobox_selected)
root.mainloop()
こちらは「プルダウンの選択を変更時」にイベントを発火したいときに使うよ!
bindに”<<ComboboxSelected>>“を渡すのを忘れずに!
まとめ
本記事では、Comboboxを使って、Tkinterで画面にプルダウン(ドロップダウン)リストを表示する方法を紹介しました!
ポイントは以下の7つです!
① Tkinterで画面にプルダウン(ドロップダウン)リストを表示するには「Combobox」を使う
② 「values」オプションは、選択肢のリストを指定!
③ 「state」オプションは、コンボボックスの状態を指定!
④ 「width」オプションは、コンボボックスの表示幅を文字数で指定!
⑤ 「postcommand」オプションは、コンボボックスが表示される直前に呼び出されるコールバック関数を指定!
⑥ 「tk.StringVar」は、選択された値を保持!
⑦ 「bind(<<ComboboxSelected>>)」は選択時のイベント発火!
まとめの内容を見て、もう頭に浮かべば完璧!
今日もお疲れ様です!
コメント