Привязка функции к списку в Python tkinter - PullRequest
0 голосов
/ 24 января 2019

Я новичок в python и tkinter, и у меня возникла проблема, когда я практиковался в Combobox. Я написал этот код с двумя зависимыми списком. Если в первом поле со списком выбран «Ян», второй будет включен, и в качестве единственного выбора будет автоматически выбран «J».

Когда я запустил свой код и выбрал «Jan» в Combobox1, выпадающий список 2 был включен, но у него не было никакого значения (в данном случае «J»).

Может ли кто-нибудь помочь мне с этим?

import ttk

root = Tk()
root.geometry("400x400")

month = StringVar()
combobox1 = ttk.Combobox(root, textvariable = month)
combobox1.config(values = ('Jan', 'Feb', 'August'))

combobox1.pack()

date = StringVar()
global comb2
comb2 = ttk.Combobox(root, textvariable = date)
comb2.pack()
comb2.config(state=DISABLED)

def comb1_selected(*args):
    if (combobox1.current() != -1 ):
        comb2.config(state='normal')

        if combobox1.current() == "Jan":
            comb2.config(values=('J'))




combobox1.bind("<<ComboboxSelected>>", comb1_selected)

root.mainloop()```



1 Ответ

0 голосов
/ 24 января 2019

Combobox.current() возвращает индекс выбранного элемента. В вашем случае это 0.

Если вы хотите получить значение выбранного элемента, вы должны использовать Combobox.get().

def comb1_selected(*args):
    if (combobox1.current() != -1 ):

        print('current: ' + str(combobox1.current())) #current: 0
        print('get: ' + combobox1.get()) #get: Jan

        comb2.config(state='normal')
        if combobox1.get() == 'Jan':
            comb2.config(values=('J'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...