本記事では、ドロップダウンリストの作成方法が分からない方のために、ドロップダウンリストの作成方法を解説していきます!
ドロップダウンリストは、下図のように選択肢が一覧として表示されるテキストボックスです。
tkinter では、Combobox ウィジェットを用いることでドロップダウン式のリストを表示させることができます。
では実際に使い方を説明していきます!
完成したコードが知りたい方は目次から「完成したプログラム」を押してみてください!
プログラミングをより効率的に学びたい方はプログラミングスクールがスキルアップの近道です!是非参考にしてみてください。
未経験でも安心!
学生や30代の方にもおすすめなプログラミングスクールがあります!
記事の信頼性
自動化アプリケーション作成に携わっている私が、初心者にも分かりやすくプログラミングの基礎を紹介しています。
Combobox の使い方
Combobox を使うための準備
Combobox ウィジェットは、通常の tkinter ではなく tkinter.ttk モジュールに用意されているものになります。
そのため事前に ttk モジュールをインポートする必要があります。
import tkinter.ttk as ttk
Combobox の生成
ttk モジュールをインポートしたら次はCombobox リストに表示させたいリストを作成してみましょう。
まずは、 ttk を利用してCombobox のウィジェットを生成します。
option = ["A", "B", "C", "D"] # 選択肢
variable = tk.StringVar ( ) #A~Dが文字列の場合
combo = ttk.Combobox ( root , values = option , textvariable = variable )
ここで、ウィジェット変数であるA~Dの変数が「文字列」「整数」「浮動小数点」「Boolean値(True,False)」なのかによって変数を指定する必要があります。それぞれ以下のように指定します。
文字列の場合:
variable = tk.StringVar()
整数の場合:
variable = tk.IntVar()
浮動小数点の場合:
variable = tk.DoubleVar()
Boolean値の場合:
variable = tk.BooleanVar()
ここで ttk.Combobox () の引数は、以下を指定しています。
- root:オブジェクト名の指定
- values:表示させたいリストの指定
- textvariable:Combobox の結果を受け取るための文字列の指定
仕事がはかどるおすすめ参考書
Comboboxのオプション一覧
Combobox で使用できるオプションの一覧を以下の表に示します。
オプション名 | 指定箇所 |
height | ドロップダウンリストに表示する高さの指定 |
width | 文字数を指定(横幅) |
cursor | カーソルがホバーしている時の形状を指定 |
justify | テキスト文字列の配置方法(LEFT, CENTER, RIGHT) |
postcommand | Comboboxの▼をクリックしたときのコールバック関数を指定 |
style | カスタムウィジェットスタイルを指定 |
textvariable | Combobox内に表示させる変数の型を指定 |
values | リストに表示するデータを指定 |
font | テキスト文字のフォント、サイズ、太さを指定 |
state | コンボボックスの状態を指定 |
■ heightオプション
ttk.Combobox ( root , height = 2 )
■ widthオプション
ttk.Combobox ( root , width = 2)
■ cursorオプション
ttk.Combobox ( root , cursor = " arrow " )
ttk.Combobox ( root , cursor = " hand1 " )
ttk.Combobox ( root , cursor = " hand2 " )
ttk.Combobox ( root , cursor = " star " )
ttk.Combobox ( root , cursor = " dot " )
上記以外にもカーソルの種類はたくさんありますが今回は代表的なモノだけ載せておきます。
■ justifyオプション
ttk.Combobox ( root , justify = tk.LEFT )
ttk.Combobox ( root , justify = tk.CENTER )
ttk.Combobox ( root , justify = tk.RIGHT )
■ stateオプション
ttk.Combobox ( root , state = " readonly " )
ttk.Combobox ( root , state = " disabled " )
“disabled” を指定するとコンボボックスの操作ができなくなります。
■ textvariableオプション
variable = tk.StringVar()
textvariableoption = ttk.Combobox ( root , textvariable = variable )
コンボボックスに表示させるテキストの型を指定します。
■ valuesオプション
option = ["A", "B", "C", "D"]
valuesoption = ttk.Combobox ( root , values = option )
■ fontオプション
fontoption = ttk.Combobox ( root , font = ( "MS Gothic" , 16 , "bold" ) ) #boldを指定すると太字になる
Combobox が選択された際に、値を取得する方法
combobox オブジェクトのリストから、選択肢がクリックされた場合に実行したい処理がある場合には bind() を使用します。
bind() では、引数を以下のように指定しています。第一引数では仮想イベント(<<ComboboxSelected>>)を指定します。
ttk.Combobox で定義されている仮想イベントは <<ComboboxSelected>> のみです。
このイベントが行われた際に、実行したい関数を第二引数であるコールバック関数に記載します。
そうすることでリストから選択された際に、処理を実行することができるというわけです!
combo.bind ( " <<ComboboxSelected>> " , コールバック関数 )
スポンサーリンク
スポンサーリンク
完成したプログラム
ではCombobox を用いて、リストが選択された際に「○○が選択されました!」と表示するプログラムを作成してみましょう!
以下のコードを実行してみて下さい。
本プログラムは、main関数を定義しているため global 関数として combo = str() を指定しています。main 関数を定義しない場合は必要ありません。
import tkinter as tk
from tkinter import *
import tkinter.ttk as ttk
def main():
global combo
label1=tk.Label(root,text="通勤手段を入力してください")
label1.pack()
option = ["徒歩", "車", "電車", "その他"] # 選択肢
variable = tk.StringVar()
combo=ttk.Combobox(root,values=option,textvariable=variable)
combo.bind("<<ComboboxSelected>>",combo_selected)
combo.pack()
def combo_selected(event):
global combo
print(combo.get(),"が選択されました")
if __name__=="__main__":
root = tk.Tk()
root.geometry("300x100")
root.title("comboboxのデータ取得")
combo=str()
main()
root.mainloop()
このように combobox が生成されました!
そして上図のように「車」を選択した場合には、実行結果に「車が選択されました」と表示されていることが分かります。
以上となります。最後まで見ていただきありがとうございました!
Python学習に有効な書籍の紹介もしています!是非参考にしてみてください!
次の記事では、タブ付きウィジェットの作成方法について解説しています。
是非参考にしてみて下さい!