如何使用pyqt4搜索列表小部件中的项目

How to search an item in list widget using with pyqt4

在我的示例程序中,我想在列表 widget.In 中显示很多名称,我想使用搜索按钮在列表小部件中搜索特定项目,并且我想打印该项目名称在列表小部件中。

下面是我的代码:

import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()
    def initUI(self):
        auto_search_vbox = QtGui.QVBoxLayout(self)
        hbox=QtGui.QHBoxLayout()
        le_search = QtGui.QLineEdit()
        se_btn = QtGui.QPushButton("Search")
        se_btn.clicked.connect(self.find_item)
        hbox.addWidget(le_search)
        hbox.addWidget(se_btn)
        auto_search_vbox.addLayout(hbox)
        self.listwidget = QtGui.QListWidget()
        self.total_list =["machine","printer","xerox bundles"]
        self.listwidget.addItems(self.total_list)
        auto_search_vbox.addWidget(self.listwidget)

        self.show()
    def find_item(self):
        out = self.listwidget.findItems("mac", QtCore.Qt.MatchExactly)
        print out   
def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

抱歉,我有 PyQt5。试一试:

flags Qt::MatchFlags

This enum describes the type of matches that can be used when searching for items in a model.

import sys
#from PyQt4.QtGui  import *
#from PyQt4.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore    import *
from PyQt5.QtGui     import *

class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()
        
    def initUI(self):
        
        self.le_search = QLineEdit()                            # self.   +++
        
        se_btn    = QPushButton("Search")
        se_btn.clicked.connect(self.find_item)
        
        self.listwidget = QListWidget()
        self.total_list = ["machine", "mac1", "printer", "Printer","xerox bundles", "2mac"]
        self.listwidget.addItems(self.total_list)        

        hbox      = QHBoxLayout()        
        hbox.addWidget(self.le_search)                          # self.   +++
        hbox.addWidget(se_btn)
        
        auto_search_vbox = QVBoxLayout(self)
        auto_search_vbox.addLayout(hbox)
        auto_search_vbox.addWidget(self.listwidget)

    def find_item(self):
#        out = self.listwidget.findItems("mac", QtCore.Qt.MatchExactly)          # ---
#        out = self.listwidget.findItems(self.le_search.text(), Qt.MatchExactly)  
        out = self.listwidget.findItems(self.le_search.text(), 
                                        Qt.MatchContains |          # +++
                                        Qt.MatchCaseSensitive)      # +++
        
        print("out->", [ i.text() for i in out ] ) 
        
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())