如何在pyqt4 python中从QcomboBox中删除重复项

如何从 pyqt4 的组合框中删除重复项。我尝试了以下代码,但它没有从组合框中删除重复项。


代码:


from PyQt4 import QtCore, QtGui

import sys

app = QtGui.QApplication(sys.argv)

w = QtGui.QWidget()

w.resize(500, 388)


combo=QtGui.QComboBox(w)

combo.setGeometry(QtCore.QRect(150, 50, 251, 31))

combo.addItem("aa")

combo.addItem("bb")

combo.addItem("cc")

combo.addItem("aa")

combo.setDuplicatesEnabled(False)


w.setWindowTitle("PyQt")

w.show()

sys.exit(app.exec_())


波斯汪
浏览 550回答 2
2回答

慕神8447489

看来您还没有阅读文档:此属性保存用户是否可以在组合框中输入重复项。请注意,始终可以以编程方式将重复项插入组合框中。默认情况下,此属性为 false(不允许重复)。亮点是我的所以一个可能的解决方案是覆盖 addItem 方法来进行过滤:from PyQt4 import QtCore, QtGuiimport sysclass ComboBox(QtGui.QComboBox):    def addItem(self, item):        if item not in self.get_set_items():            super(ComboBox, self).addItem(item)    def addItems(self, items):        items = list(self.get_set_items() | set(items))        super(ComboBox, self).addItems(items)    def get_set_items(self):        return set([self.itemText(i) for i in range(self.count())])if __name__ == "__main__":    import sys    app = QtGui.QApplication(sys.argv)    w = QtGui.QWidget()    w.resize(500, 388)    combo = ComboBox(w)    combo.setGeometry(QtCore.QRect(150, 50, 251, 31))    combo.addItems(["aaa", "bb", "aaa"])    combo.addItem("aa")    combo.addItem("bb")    combo.addItem("cc")    combo.addItem("aa")    w.setWindowTitle("PyQt")    w.show()    sys.exit(app.exec_())

慕尼黑8549860

从qt 文档:请注意,始终可以以编程方式将重复项插入组合框中。您需要手动避免重复。您可以制作set所有项目的 a ,然后将其项目与addItem.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python