我有一个关于如何通过组合框选择从ListWidget过滤项目的问题
例如,在我的ListWidget中,有黄色01,黄色02,蓝色01,红色01,红色02和红色03 在我的组合框中,有黄色,蓝色和红色
我想,你得到了它的要点,如果用户在组合框中选择Red,ListWidget将显示Red 01,Red 02,Red 03 ......其他2个选项也是如此。< / p>
有人可以指导我这件事吗?
顺便说一句,出于好奇,如果我要整合另一个文本字段(QLineEdit),共计3个项目并使其与组合框的功能相同,是否可以完成?
P.S:我的信息是从目录中读取的,因此它有点棘手,我想
答案 0 :(得分:1)
假设您使用设计器创建了一个ui文件myDialog.ui
。 QListWidget和QComboBox被称为comboBox
和listWidget
。
要更新你的QListWidget,我建议采用这种方法:
#!/usr/bin/env python
# -*- coding: utf-8 *-
import sys
import os
from PyQt4 import QtGui, QtCore, uic
app = QtGui.QApplication(sys.argv)
class MyDialog(QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
uic.loadUi(os.path.join(os.path.dirname(os.path.abspath(__file__)),"myDialog.ui"), self)
self.comboBox.currentIndexChanged.connect(self.updateList)
self.comboBox.clear()
self.comboBox.insertItems(0,self.getFilters())
self.updateList()
pass
def updateList(self):
items = self.getListItems()
text_filter = str(self.comboBox.currentText())
self.listWidget.clear()
# If "All" is used, no filter is applied
self.listWidget.insertItems(0,[text for text in items if text_filter in text + "All"])
pass
def getFilters(self):
# Write here your own method to retrieve the filters
return ["Yellow", "Blue", "Red", "All"]
def getListItems(self):
# Write here your own method to retrieve the list values
return ["Yellow 01", "Yellow 02", "Blue 01", "Red 01", "Red 02", "Red 03 "]
myDialog = MyDialog()
myDialog.show()
sys.exit(app.exec_())