※このページではアフィリエイト広告を利用しています

【Python応用】Tkinterでアプリ作成-Comboboxの使用例まとめ-

Python

Tkinterでプルダウンを用いたい場合は「Combobox」を用いることで可能です。

ここでは、Comboboxの使用例についてまとめています。

この記事の対象

  • 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())

結果

タイトルとURLをコピーしました