Попытка заставить второе выпадающее меню меняться в зависимости от выбора первого выпадающего меню. (python, Tkinter) - PullRequest
0 голосов
/ 14 апреля 2020

Итак, я хочу создать 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...