Tkinterでプルダウンを用いたい場合は「Combobox」を用いることで可能です。
ここでは、Comboboxの使用例についてまとめています。
この記事の対象
Comboboxとは?

「Combobox」とはプルダウンのコンポーネントになります。
基本的な型
import tkinter.ttk as ttk
option = ["***", "***", "***", "***"]
variable = tk.StringVar()
combo=ttk.Combobox(root,values=option,textvariable=variable)
combo.bind("<<ComboboxSelected>>")
基本的な使用方法は、「ttk.Combobox()」のvalues引数に項目を渡してあげるだけです。
よく使用するオプションは以下です。
| Option | 内容 | 
| justify | 文字の整列指定。left, center, rightから選択 | 
| height | リストの高さ指定。 | 
| state | 状態(読み取りのみなど)の指定。normal, readonly, disabledから選択 | 
| textvariable | 値を保持するグローバル変数の指定。 | 
| values | 値のリスト指定。 | 
| width | 幅の指定。 | 
プルダウンの生成方法
from tkinter import *
import tkinter as tk
import tkinter.messagebox as mb
import tkinter.ttk as ttk
#1---windowの作成
root = Tk()
root.title("Test")
root.configure(bg="#fffbdb")
root.geometry('640x480')
#2---プルダウン作成
option = [".bat", ".csv", ".xlsx", ".txt"]
variable = tk.StringVar()
combo=ttk.Combobox(root,values=option,textvariable=variable)
combo.bind("<<ComboboxSelected>>")
combo.pack()
root.mainloop()
上記がプログラムになります。
1の部分はウィンドウの作成になります。それでは2の部分から解説になります。
#2---プルダウン作成
option = [".bat", ".csv", ".xlsx", ".txt"]
2の部分でプルダウンを作成しています。始めにoptionでプルダウンの要素を作成しています。
variable = tk.StringVar()
次に「tk.StringVar()」で文字列を変数と指定しています。
combo=ttk.Combobox(root,values=option,textvariable=variable)
「ttk.Combobox()」では要素と変数を指定しています。
結果

プルダウンの文字列を抽出
import openpyxl
from turtle import width
import time
import tkinter as tk
import tkinter.ttk as ttk
import threading
import subprocess
def start_thread_sheet():
    threadsheet = threading.Thread(target=thread_sheet)
    threadsheet.start()
def thread_sheet():
    data_name = read_filename.get()
    save_file = save_filename.get()
#1---拡張子取得
    save_file_extension = save_file + str(variable.get())
    excel_data = openpyxl.load_workbook(data_name)
    excel_sheetname = excel_data.sheetnames
    open_file = open(save_file_extension,mode = "w",encoding = "utf-8")
    for i,name in enumerate(excel_sheetname):
        open_file.write(str(i)+','+name+"\n")
    open_file.close()
root = tk.Tk()
root.title("Auto")
root.geometry("640x395")
button1 = tk.Button(text="Start", command = start_thread_sheet)
lb_filename = tk.Label(text='Reading File Name')
read_filename = tk.Entry(width = 50, bg = "#FAF8EC")
lb_savename = tk.Label(text='Save File Name')
save_filename = tk.Entry(width = 50, bg = "#FAF8EC")
option = [".bat", ".csv", ".xlsx", ".txt"]
variable = tk.StringVar()
combo=ttk.Combobox(root,values=option,textvariable=variable,state="readonly")
combo.bind("<<ComboboxSelected>>")
lb_filename.grid(column=0,row=0)
read_filename.grid(column=1,row=0)
lb_savename.grid(column=0,row=1)
save_filename.grid(column=1,row=1)
button1.grid(column=3,row=2)
combo.grid(column=2,row=1)
root.mainloop()
上記は任意のエクセルファイルをEntry(Reading File Name)に入力してそのエクセルのSheet名を取得して任意のファイルに出力するものです。
このプログラムの肝である、プルダウンで選択した文字列(拡張子)を取得する場合は「variable.get()」になります。
#1---拡張子取得
    save_file_extension = save_file + str(variable.get())
結果

