質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

ドロップダウンメニュー

GUIを操作するユーザーインターフェイスで、リストボックスに似ており、ユーザーがリストから値を選べるようにするものです。ドロップダウンのリストが非アクティブの場合は、単体の値を表示します。アクティブ化されると、ユーザーが選択可能な値のリスト一覧を表示(ドロップダウン)します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2799閲覧

Tkinterのプルダウンメニューから値を取得したい

DoubleJ794

総合スコア19

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

ドロップダウンメニュー

GUIを操作するユーザーインターフェイスで、リストボックスに似ており、ユーザーがリストから値を選べるようにするものです。ドロップダウンのリストが非アクティブの場合は、単体の値を表示します。アクティブ化されると、ユーザーが選択可能な値のリスト一覧を表示(ドロップダウン)します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/09 07:34

実現したいこと

Tkinterを利用して

tk.OptionMenu のプルダウンメニューで選択した値を変数に保存したい。

発生している問題・エラーメッセージ

該当のソースコード

Python

1#!/usr/bin/env python 2# -*- coding: utf8 -*- 3 4import os 5import sys 6import glob 7import subprocess 8import psutil 9import shutil 10import tkinter as tk 11import tkinter.filedialog 12 13#パスを設定 14My_path = os.getcwd() 15lib_path = "{}/model" 16score_path = "{}/score/musicxml" 17voice_lib = lib_path.format(My_path) 18score_lib = score_path.format(My_path) 19 20#ディレクトリ名のみ取得 21singerlist = [] 22for f in os.listdir(voice_lib): 23 if os.path.isdir(os.path.join(voice_lib, f)): 24 singerlist.append(f) 25 26#ファイル名のみ取得 27scorelist = [] 28for f in os.listdir(score_lib): 29 if os.path.isfile(os.path.join(score_lib, f)): 30 scorelist.append(f) 31 32#CPUスレッド数を取得 33Threads = psutil.cpu_count() 34 35#ウィンドウ作詞絵 36root = tk.Tk() 37root.title("NEUTRINO GUI") 38root.geometry("640x360") 39 40#処理作成 41 42#新しくMusicXMLファイルを追加 43def btn_0callback(): 44 fTyp = [("無圧縮MusicXML", "*.musicxml")] 45 iDir = os.path.abspath(os.path.dirname(__file__)) 46 file_path = tkinter.filedialog.askopenfilename(filetypes=fTyp, initialdir=iDir) 47 basename = os.path.splitext(os.path.basename(file_path))[0] 48 print(basename) 49 shutil.copy(file_path, score_lib) 50 51#NEUTRINOを実行(仮) 52def btn_1callback(): 53 FormantShift = scale.get() 54 print(FormantShift) 55 CPUThreads = scale2.get() 56 print(CPUThreads) 57 print(score_data) 58 print(singer_data) 59 60#プルダウンメニューの作成 61variable = tk.StringVar(root) 62variable.set('1. Select the score file in NEUTRINO/score/musicxml.') 63opt = tk.OptionMenu(root, variable,*scorelist,) 64opt.pack(fill="x") 65 66# ボタンの作成 67button0 = tk.Button(root, text="Or select a new score file",command=btn_0callback) 68button0.pack(fill="x") 69 70#プルダウンメニューの作成 71variable2 = tk.StringVar(root) 72variable2.set('2. Choose a AI Singer') 73opt2 = tk.OptionMenu(root, variable2,*singerlist,) 74opt2.pack(fill="x") 75 76#スライダーを作成 77 78#FormantShift 79var_scale = tk.DoubleVar() 80var_scale.set(1.00) 81scale = tk.Scale( 82 root, 83 label="3-1. FormantShift", 84 variable=var_scale, 85 orient=tk.HORIZONTAL, 86 tickinterval=20, 87 length=200, 88 from_=0.85, 89 to=1.15, 90 resolution=0.005 91) 92scale.pack(fill="x") 93 94#CPU Threads 95var_scale2 = tk.DoubleVar() 96var_scale2.set(1) 97scale2 = tk.Scale( 98 root, 99 label="3-2. CPU Threads", 100 variable=var_scale2, 101 orient=tk.HORIZONTAL, 102 tickinterval=20, 103 length=200, 104 from_=1, 105 to=Threads, 106 resolution=1 107) 108scale2.pack(fill="x") 109 110#ボタンを作成 111button1 = tk.Button(root, text="4. Start NEUTRINO",command=btn_1callback) 112button1.pack(fill="x") 113 114root.mainloop() 115#これ以降の記述はウィンドウを閉じたときのみしか実行されないので注意

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

opt = tk.OptionMenu(root, variable,*scorelist,)

variable.get() で取得できます

投稿2021/05/09 09:06

sigsegv

総合スコア895

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DoubleJ794

2021/05/09 11:04

初心者だったので助かりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問