Python PYQT5

PYQT5

a marqué ce sujet comme résolu.

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 :

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

Salut !

-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")

totoato75018

Ah, oui, je me rappelle que j’ai mis du temps à trouver comment faire. À terme, j’ai fini par utiliser une liste de mes items a coté, puis à chaque clique, je vérifiais si chaque item était coché ou non.

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))
        self.myitems = []
        for i in range(10):
            item = QtWidgets.QListWidgetItem("Item %i" % i)
            item.setCheckState(Qt.Unchecked)
            self.listWidget.addItem(item)
            self.myitems.append(item)
        self.listWidget.itemClicked.connect(self.printItemText)
 
        self.layout.addWidget(self.listWidget)
        self.setLayout(self.layout)
 
    def printItemText(self):
        selected = []
        for item in self.myitems:
            if item.checkState():
                selected.append(item.text())
        
        print(selected)
 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    form = Test()
    form.show()
    app.exec_()

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

totoato75018

J’ai du mal a voir ce que tu cherches a faire, peux-tu préciser ta pensée ? Mais je t’accorde que les ressources PyQt5 sur les listes sont très maigres sur internet :)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte