[英]Changing multiple depending comboboxes with Python through pyqt
我试图用python在Qt中添加三个依赖的组合框 。 这意味着您可以更改一个组合框,该组合框将更改secound组合框中的项目列表。 您可以在此处选择另一个项目,以更改第三个组合框中的选择。 因此,我使用qtpy作为两者之间的连接。
真正重要的是:所有三个组合框的连接!
一切正常,直到您第二次更改第一个组合框为止(在始终更改secound和第三个组合框的同时,一切正常)
我的目标是尽可能多地根据第一个组合框(和secound)更改所有三个组合框的值。
这是我的代码:
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(" ")
错误在这一行:
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([" "])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.