Изменение нескольких зависимых комбинированных списков с Python через pyqt

Я пытаюсь добавить три зависимых комбинированных списка в Qt с python. Это означает, что вы можете изменить один комбинированный список, который изменяет список элементов во втором комбинированном списке. Там вы можете выбрать другой элемент, который изменяет выбор в третьем поле со списком. Поэтому я использую qtpy как связь между обоими.

Что действительно важно: соединение всех трех комбинированных списков!

Все работало нормально, пока вы не изменили первый комбинированный список во второй раз (все работало нормально, постоянно меняя второй и третий комбинированный список)

Моя цель - изменять значения во всех трех выпадающих списках в зависимости от первого выпадающего списка (и звука) так часто, как я этого хочу.

Вот мой код:

    self.ui.type1CB.currentTextChanged.connect(self.type1_changed)
    self.ui.type2CB.currentTextChanged.connect(self.type2_changed)


def type1_changed(self):
    self.ui.type2CB.clear()

    type1 = self.ui.type1CB.currentText()
    rev = ["Ge", "Er"]
    cos = ["Au", "Fr", "pe", "So", "Wo"]

    if type1 == "Ei":
        self.ui.type2CB.addItems(rev)
    elif type1 == "Au":
        self.ui.type2CB.addItems(cos)
    else:
        self.ui.type2CB.addItems(" ")

def type2_changed(self):
    self.ui.type3CB.clear()

    type2 = self.ui.type2CB.currentText()
    sa = ["Ge", "Li", "To"]
    re = ["Pf", "Ne", "Ve"]
    ca = ["Be", "Re", "Ve"]
    le = ["Au", "Be", "Ur"]
    pr = ["Le", "Ge", "Sü", "Kl", "Hy", "Ge", "Ve"]
    ot = ["An", "Ar", "Fa", "Ba", "Fe"]
    ho = ["Ha", "Ne", "Te", "Mi"]

    if type2 == "Ge":
        self.ui.type3CB.addItems(sa)
    elif type2 == "Er":
        self.ui.type3CB.addItems(re)
    elif type2 == "Au":
        self.ui.type3CB.addItems(ca)
    elif type2 == "Fr":
        self.ui.type3CB.addItems(le)
    elif type2 == "pe":
        self.ui.type3CB.addItems(pr)
    elif type2 == "So":
        self.ui.type3CB.addItems(ot)
    elif type2 == "Wo":
        self.ui.type3CB.addItems(ho)
    else:
        self.ui.type3CB.addItems(" ")

0 ответов

Ошибка в этой строке:

    else:
        self.dlg.type3CB.addItems(" ")

если вы используете addItems, вам нужно предоставить список, и вы предоставляете строку

Вы можете сделать это двумя способами:

1. используйте addItem

addItem (const QString & text, const QVariant & userData = QVariant ())

    self.dlg.type3CB.addItem(" ")

2. использовать addItems

addItems (const QStringList & тексты)

    self.dlg.type3CB.addItems([" "])
Другие вопросы по тегам