Итак, я хочу создать GUI, у которого есть 2 выпадающих меню со вторым выпадающим меню в зависимости от выбора первого выпадающего меню.
Таким образом, если выбран вариант 1, отобразится список для варианта 1 во втором меню. Если был выбран вариант 2, отобразился бы список вариантов 2 во втором меню.
В настоящее время проблема заключается в том, что я могу отобразить оба меню и выполнить их для начальных параметров. Но когда я выбираю другие опции, второе меню не изменится.
Это то, что я имею в виду.
Спасибо за вашу помощь:)
from tkinter import *
import tkinter as tkk
root = tkk.Tk()
root.title('Laser Database Generator')
#Drop down menu in the top left
# Add a grid for the formatting of the GUI
mainframe = tkk.Frame(root)
mainframe.grid(column=0,row=0, sticky=(N,W,E,S) )
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
mainframe.pack(pady = 100, padx = 100)
#stop button
#List box
# Create a Tkinter variable
tklas = tkk.StringVar(root)
#wavelength function
def wavelength ():
# - - - - - - - - -
if tklas.get() == 'option1': #This bit gets printed, since tklas is automatically 'option1' when
#you first run it, so it automatically goes into here
print('damn boi he thicc')
wave = { '250': 1,'255': 2,'260': 3,'265': 4,'270': 5,'280': 6,'295': 7,'300': 8,'310': 9,'320': 10,'340': 11,'365': 12,'380': 13}
tkwave.set('250') # set the default option
elif tklas.get() == 'option2':
#This bit never gets printed. The code runs all the way through to the
#bottom with the set defaut tklas and tkwav
print('oh lawd he comin')
wave = { '375': 1,'405': 2,'445': 3,'450': 4,'510': 5,'980': 6}
tkwave.set('375') # set the default option
return;
#___________________________________END_________________________________________
# First option menu
laser = { 'option1': 1,'option2': 2,'option3': 3,'option4': 4,'option5': 5}
tklas.set('option1') # set the default option
popupMenu = tkk.OptionMenu(mainframe, tklas, *laser)
tkk.Label(mainframe, text="Choose Option").grid(row = 1, column = 1)
popupMenu.grid(row = 2, column =1)
# on change dropdown value
def change_dropdown(*args):
print( tklas.get() )
# link function to change dropdown
tklas.trace('w', change_dropdown)
laser_list = list(laser.values())
print(laser_list)
# dropdown menu 2 Variable
tkwave = tkk.StringVar(root)
wave = { '250': 1,'255': 2,'260': 3,'265': 4,'270': 5,'280': 6,'295': 7,'300': 8,'310': 9,'320': 10,'340': 11,'365': 12,'380': 13}
tkwave.set('250') # set the default option
wavelength()
popupMenu = tkk.OptionMenu(mainframe, tkwave, *wave)
tkk.Label(mainframe, text="Choose Wavelength").grid(row = 1, column = 3)
popupMenu.grid(row = 2, column =3)
# on change dropdown value
def change_dropdown(*args):
print( tkwave.get() )
# link function to change dropdown
tkwave.trace('w', change_dropdown)
'''
widgets are added here
'''
root.mainloop()