0

我正在尝试使用 python 在 Qt中添加三个依赖组合框。这意味着您可以更改一个组合框,该组合框会更改第二个组合框中的项目列表。在那里,您可以选择另一个项目来更改第三个组合框中的选择。因此我使用 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(" ")
4

1 回答 1

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 &texts)

    self.dlg.type3CB.addItems([" "])
于 2019-03-04T14:36:35.893 回答