QCombobox & QListWidget - 检查内容
Posted
技术标签:
【中文标题】QCombobox & QListWidget - 检查内容【英文标题】:QCombobox & QListWidget - Check Content 【发布时间】:2019-12-15 02:42:15 【问题描述】:我想问是否有办法检查一个项目是否在 QListWidget 或 QComboBox 中。 有了这个,我想确保每个项目在 QListWidget 或 QCombobox 中都是唯一的。 如果可能的话,我想要那样的东西:
for i in range(0, len(LISTE), 1):
if LISTE[i] in self.liste:
return
else:
self.liste.addItem(LISTE[i])
【问题讨论】:
好吧,如果您使用 QListWidget 或 QComboBox 仅在代码中显示您在列表或字典中某个位置的数据,那么非常容易,因为您只需检查列表或字典 【参考方案1】:您可以创建自己的 QComboBox 子类(以及分别为 QListWidget)。
然后您可以创建方法__contains__
并重载其他方法。就像在这个例子中一样:
from PyQt5.QtWidgets import QComboBox, QApplication
class UniqueComboBox(QComboBox):
def __init__(self):
super().__init__()
self._current_values = set()
def __contains__(self, item):
return item in self._current_values
def addItem(self, text): # this is simple implementation. do not support all cases
if text not in self._current_values:
super().addItem(text)
self._current_values.add(text)
def addItems(self, text_list):
for el in text_list:
self.addItem(el)
if __name__ == "__main__":
app = QApplication([])
combo = UniqueComboBox()
combo.addItems(["a", "b", "a", "c"])
print("a" in combo, "z" in combo)
combo.show()
app.exec_()
【讨论】:
以上是关于QCombobox & QListWidget - 检查内容的主要内容,如果未能解决你的问题,请参考以下文章
当鼠标通过 QSS 悬停在 QComboBox 上时,样式 QComboBox 的子控件向下箭头
在QT中怎么隐藏QComboBox的下拉列表并当单击QComboBox的编辑框时,就弹出QListWidget窗口