1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
import sys
import os
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
app = QApplication(sys.argv)
# QCompleter avec une QStringListe ============================
slmodel = QStringListModel()
slmodel.setStringList(['rien', 'Rien','Mot', 'mes', 'moi', 'Dico', 'Mémé', 'mince'])
listefichiers=os.listdir("/usr/share/applications/")
listefichiers.sort()
lfmodel=QStringListModel()
lfmodel.setStringList(listefichiers)
completer0= QCompleter()
completer0.setMaxVisibleItems(10)
completer0.setCaseSensitivity(0)
completer0.setModel(lfmodel)
lineedit0 = QLineEdit()
lineedit0.setWindowTitle("-> QStringListModel")
lineedit0.setGeometry(400,300,350,25)
lineedit0.setCompleter(completer0)
lineedit0.show()
# QCompleter avec un QFileSystemModel ======================
fsmodel = QFileSystemModel()
monrep="/usr/share/applications/"
fsmodel.setRootPath(monrep)
completer1 = QCompleter()
completer1.setMaxVisibleItems(10)
completer1.setCaseSensitivity(0)
completer1.setModel(fsmodel)
lineedit1 = QLineEdit()
lineedit1.setWindowTitle("-> QFileSystemModel")
lineedit1.setGeometry(400,400,350,25)
lineedit1.setCompleter(completer1)
lineedit1.show()
# QCompleter recherche avancée ===============================================
# Merci à Tyrtamos
# #https://www.developpez.net/forums/d1487017/autres-langages/python/gui/pyqt/configuration-d-qcompleter/
# installe ln QSortFilterProxyModel qui s'insère entre le QCompleter et le modele
proxymodel = QSortFilterProxyModel()
proxymodel.setFilterCaseSensitivity(Qt.CaseInsensitive)
proxymodel.setSourceModel(lfmodel)
completer2 = QCompleter()
completer2.setMaxVisibleItems(10)
completer2.setCaseSensitivity(0)
completer2.setCompletionMode(QCompleter.UnfilteredPopupCompletion)
completer2.setModelSorting(QCompleter.CaseInsensitivelySortedModel)
completer2.setModel(proxymodel)
lineedit2 = QLineEdit()
lineedit2.setWindowTitle("-> Recherche avancée")
lineedit2.setGeometry(400,500,350,25)
lineedit2.setFocusPolicy(Qt.StrongFocus)
lineedit2.setCompleter(completer2)
lineedit2.textEdited.connect(proxymodel.setFilterFixedString)
lineedit2.show()
#=======================================================================
sys.exit(app.exec_()) |
Partager