Python Tkinter - Как обновить значения Combobox в зависимости от выбора OptionMenu? - PullRequest
0 голосов
/ 10 мая 2018

Мне нужна помощь в следующем.

Я работаю над небольшим проектом, который требует обновления значений ComboBox в зависимости от выбора, который пользователь делает в OptionMenu.

В настоящее время поле со списком показывает значения для потока 1, но в большинстве случаев оно показывает значение, подобное PY, с числом (т. Е. PY_VAR2)

Ниже приведен основной раздел кода изэти два виджета я пытаюсь соединить.

Заранее спасибо за помощь.

### Option Menu Section
thdTypeLabel = Label(thdParamsFrame, text="Thread Type")
thdTypeLabel.grid(row=0, column=0, padx=(30,10), pady=(10,10),sticky=E)

thdInitType = StringVar(thdParamsFrame)
thdInitType.set("Thread 1")
thdTypeMenu = OptionMenu(thdParamsFrame, thdInitType, "Thread 1","Thread 2", "Thread 3", command=thdTypeSelection)
thdTypeMenu.grid(row=0, column=1)
thdTypeMenu.configure(width=14)

Секция Combo Box

thdInitTPI = StringVar()
thdTPICombo = ttk.Combobox(thdParamsFrame, width = 17, textvariable=thdInitTPI, values=TPIVals)

thdType = thdInitType.get()

if thdType == "Thread 1":
    thdTPICombo.config(values=['2','3','4','5','6','8','10','12','14','16'])
elif thdType == "Thread 2":
    thdTPICombo.config(values=['2','3','4','5','6','8','10','12','14','16'])
elif thdType =="Thread 3":
    thdTPICombo.config(values=['6','7','8','10','11','12','14','16','18','20'])

thdTPICombo.bind('<<ComboboxSelected>>',None)

1 Ответ

0 голосов
/ 11 мая 2018

Ну, у вас есть обратный вызов из OptionMenu: thdTypeSelection, так что просто обновите Combobox там:

def thdTypeSelection(event=None):
    thdType = thdInitType.get()
    if thdType == "Thread 1":
        thdTPICombo.config(values=['2','3','4','5','6','8','10','12','14','16'])
    elif thdType == "Thread 2":
        thdTPICombo.config(values=['2','3','4','5','6','8','10','12','14','16'])
    elif thdType =="Thread 3":
        thdTPICombo.config(values=['6','7','8','10','11','12','14','16','18','20'])

Меня немного беспокоит, что Thread 1 уже выбрано в OptionMenu, но Combobox представляет TPIVals, какими бы они ни были.

...