Bonjour,

Je suis nouveau sur la programmation en PYQT5, ainsi j'aurais aimé une aide,

je chercher à faire une QListWidget à l’intérieur il y'a que des checkbox, ainsi qu'un filtre qui me permet de faire une recherche parmi les items dans la QListWidget.

voici le code que j'ai pu faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
import sys
from PyQt5.QtCore import QDate, QSize, Qt
from PyQt5.QtGui import *
from PyQt5 import QtWidgets,QtCore
 
class Test(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(Test, self).__init__(parent)
        self.layout = QtWidgets.QVBoxLayout()
        self.listWidget = QtWidgets.QListWidget()
        self.listWidget.itemEntered.connect(lambda item: item.setCheckState(Qt.Checked if item.checkState()==Qt.Unchecked else Qt.Unchecked))
        self.listWidget.setGeometry(QtCore.QRect(10, 10, 211, 291))
        for i in range(10):
            item = QtWidgets.QListWidgetItem("Item %i" % i)
            item.setCheckState(Qt.Unchecked)
            self.listWidget.addItem(item)
        self.listWidget.itemClicked.connect(self.printItemText)
 
        self.layout.addWidget(self.listWidget)
        self.setLayout(self.layout)
 
    def printItemText(self):
        items = self.listWidget.selectedItems()
        print (self.listWidget.itemClicked)
        for i in range(len(items)):
            print (str(self.listWidget.selectedItems()[i].text()))
 
 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    form = Test()
    form.show()
    app.exec_()
les problèmes auxquels je suis confronté sont:

-je n'arrive pas à savoir quelle checkbox est sélectionnée, à terme je cherche à remplir une liste avec les items sélectionnées ("il faut prendre en compte ceux qui ont changé d'état")

-un filtre qui me permet de chercher rapidement un item, IMPOSSIBLE de trouver quoi que ce soit sur internet :/



je vous remercie d'avance pour vos réponses