3

GUI ボタン​​を押すことで実行できる関数にいくつかのパラメーターを提供するいくつかのドロップダウン メニューで構成される Tkinter-GUI を作成しました。問題は、この関数はいくつかのパラメーターの組み合わせでしか実行できないことです (すべての組み合わせが可能というわけではありません)。したがって、最初のドロップダウン メニューからの選択に応じて、GUI がドロップダウン メニュー内の選択肢のリストを自動的に更新するようにします。

オプション A が特定の値に設定されているという条件の下で、オプション B、C、D、E の可能なパラメーター値を導出できる関数がありますが、によって表示される選択肢を更新する方法がわかりません。 GUI。

GUIオプションメニューの選択肢の自動更新を実現するために使用できるTkinter機能はありますか?


編集:

これが私が試したスクリプトです。バグでいっぱいのようですが、私がやりたいことを説明できると思います:

choices4option1 = [1,2,3]
choices4option2 = [4,5,6]
choices4option3 = [7,8,9]
def update_GUI_choices(option):
    if option == 'option1':
        if GUI_options.option1.get()==1:
           global choices4option2       
           choices4option2 = [4,5]
        else: pass
    elif option == 'option2':
        if GUI_options.option2.get()==4:
           global choices4option3       
           choices4option3 = [8,9]
        else: pass
    else: pass

# GUI
import Tkinter as tk
GUI = tk.Tk()

class GUI_options:
    option1 = tk.IntVar(GUI)
    option1.set('choose a value')
    option2 = tk.IntVar(GUI)
    option2.set('choose a value')
    option3 = tk.IntVar(GUI)
    option3.set('choose a value')

om_option1 = tk.OptionMenu(GUI, GUI_options.option1, *choices4option1)
om_option1.grid(column=0, row=0)
menu_option1 = om_option1.children["menu"]
menu_option1.delete(0,'end')
for values in (choices4option1):
    menu_option1.add_command(label=values, command=lambda: update_GUI_choices('option1'))

om_option2 = tk.OptionMenu(GUI, GUI_options.option2, *choices4option2)
om_option2.grid(column=0, row=1)
menu_option2 = om_option2.children["menu"]
menu_option2.delete(0,'end')
for values in (choices4option2):
    menu_option1.add_command(label=values, command=lambda: update_GUI_choices('option2'))

om_option3 = tk.OptionMenu(GUI, GUI_options.option3, *choices4option3)
om_option3.grid(column=0, row=2)
menu_option3 = om_option3.children["menu"]
menu_option3.delete(0,'end')
for values in (choices4option3):
    menu_option3.add_command(label=values, command=lambda: update_GUI_choices('option3'))

GUI.mainloop()

メニュー 1 での選択が完了したときに、オプション メニュー 2 に新しい値を取得するように求めるにはどうすればよいですか?

4

1 に答える 1