Получить индекс выбранного элемента в ttk.Combobox - PullRequest
1 голос
/ 04 марта 2020

У меня проблемы с операторами IF при использовании комбинированных окон при использовании Tkinter. Когда я хочу, чтобы программа выбрала время ускорения, вместо этого программа выбирает время ускорения и все остальные формулы в раскрывающемся списке. Пожалуйста, вы можете помочь мне с этим?

dropdown = Combobox(root)
dropdown['values']=("Speed, Distance, Time", "Speed, Acceleration, Time", "Gravitational Potential Energy(Ep)", "Kinetic Energy (Ek)", "Elastic Potential Energy (Ee)", "Energy/Work Done, Power, Time", "Energy/Work Done, Force, Distance", "Energy, Voltage, Charge", "Specific Heat Capacity", "Specific Latent Heat", "Efficency", "Pover, Voltage, Current", "Power, Current, Resistance", "Current, Charge, Time", "Voltage, Current, Resistance")
dropdown.pack()

def clicked():    
    if dropdown['values'][0] == dropdown_formulae[0][0]: # if the user has selected the first option
        simpleFormulaMenu(0)
    elif dropdown['values'][1] == dropdown_formulae[1][0]:
        simpleFormulaMenu(1)
    elif dropdown['values'][2] == dropdown_formulae[2][0]:
        pass
    elif dropdown['values'][3] == dropdown_formulae[3][0]:
        pass
    elif dropdown['values'][4] == dropdown_formulae[4][0]:
        pass
    elif dropdown['values'][5] == dropdown_formulae[5][0]:
        simpleFormulaMenu(5)
    elif dropdown['values'][6] == dropdown_formulae[6][0]:
        simpleFormulaMenu(6)
    elif dropdown['values'][7] == dropdown_formulae[7][0]:
        simpleFormulaMenu(7)
    elif dropdown['values'][8] == dropdown_formulae[8][0]:
        pass
    elif dropdown['values'][9] == dropdown_formulae[9][0]:
        pass
    elif dropdown['values'][10] == dropdown_formulae[1][0]:
        pass
    elif dropdown['values'][11]:
        simpleFormulaMenu(11)
    elif dropdown['values'][12]:
        simpleFormulaMenu(12)
    elif dropdown['values'][13]:
        simpleFormulaMenu(13)



button = tk.Button(text = "Submit", command = clicked)
button.pack()

1 Ответ

0 голосов
/ 05 марта 2020

Вопрос : Получить индекс выбранного элемента в ttk.Combobox


Основная точка : Использовать <seq>.index чтобы получить индекс выбранного элемента


Ссылка

  • s.index(x[, start[, end]])

    Возвращает нулевой индекс в последовательности первого элемента, значение которого равно x

  • Combobox.get()

    Метод .get() возвращает текущий выбранный элемент Combobox

  • simple-ttk-combobox-demo

    Привязать виртуальное событие <<ComboboxSelected>> к виджету Combobox


import tkinter as tk
import tkinter.ttk as ttk


class App(tk.Tk):
    def __init__(self):
        super().__init__()

        self.combobox = combobox = ttk.Combobox(self)
        combobox['values'] = ("Speed, Distance, Time",
                              "Speed, Acceleration, Time",
                              "Gravitational Potential Energy(Ep)"
                              )
        combobox.pack()

        button = tk.Button(text="Submit", command=self.on_clicked)
        button.pack()

    def on_clicked(self, *event):
        selected = self.combobox.get()
        if selected:
            idx = self.combobox['values'].index(selected)
            print('simpleFormulaMenu({}), selected: {}'.format(idx, selected))

            if idx in (2, 3, 4):  # pass
                pass
            else:
                # simpleFormulaMenu(idx)
                pass


if __name__ == '__main__':
    App().mainloop()

Протестировано с Python: 3,5 - «TclVersion»: 8,6 «TkVersion»: 8,6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...