実現したいこと
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/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/09 11:04