IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

QTableWidget sort disable


Sujet :

PyQt Python

  1. #1
    Membre du Club
    Homme Profil pro
    ngénieur d'etat en science géodésique et travaux topographique
    Inscrit en
    Septembre 2016
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : ngénieur d'etat en science géodésique et travaux topographique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2016
    Messages : 152
    Points : 65
    Points
    65
    Par défaut QTableWidget sort disable
    salut a tous, comment je peux faire ça :

    qtablewidget set sorting disable pour une colonne spécifique

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Voilà une solution. Dans cet exemple, on interdit le tri des colonnes 3 et 5.

    On utilise un héritage de QTableWidgetItem, dont on surcharge la méthode __lt__ (="lesthan) qui appartient à PyQt et non à Qt. Pour que ça marche, il faut donc que toutes les cases concernées soient des QTableWidgetItem.

    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
    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
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
     
    import sys
    from random import randint
    from PyQt5 import (QtWidgets, QtGui, QtCore)
     
     
    #############################################################################
    class TableWidgetItem(QtWidgets.QTableWidgetItem):
     
        # =======================================================================
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
     
            self.pasdetricols = []
     
        # =======================================================================
        def __lt__(self, other):
     
            if self.column() in self.pasdetricols:
                return False
            else:
                a = self.data(QtCore.Qt.DisplayRole)
                b = other.data(QtCore.Qt.DisplayRole)
                return (a < b)
     
    #############################################################################
    class Fenetre(QtWidgets.QWidget):
     
        # =======================================================================
        def __init__(self, parent=None):
            super(Fenetre, self).__init__(parent)
     
            self.resize(800, 600)
     
            self.tableWidget = QtWidgets.QTableWidget(self)
            self.nbrow, self.nbcol = 7, 7
            self.tableWidget.setRowCount(self.nbrow)
            self.tableWidget.setColumnCount(self.nbcol)
     
     
            for row in range(0, self.nbrow):
                for col in range(0, self.nbcol):
                    val = str(randint(1000, 9999))
                    item = TableWidgetItem(val)
                    item.pasdetricols = [3, 5] # <= interdit le tri des colonnes 3 et 5
                    self.tableWidget.setItem(row, col, item)
     
            self.tableWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)  # MultiSelection)
     
            posit = QtWidgets.QGridLayout()
            posit.addWidget(self.tableWidget, 0, 0)
            self.setLayout(posit)
     
            self.tableWidget.setSortingEnabled(True)
     
            self.tableWidget.setFocus()
            self.tableWidget.setCurrentCell(0, 0)
     
    #############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        fen = Fenetre()
        fen.show()
        sys.exit(app.exec_())
    En cherchant une solution, je me suis aperçu que les possibilités de tri ou de filtrage des données sont très limités avec le QTableWidget, contrairement au QTableView. Mais ce dernier a d'autres sources de complexités.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre du Club
    Homme Profil pro
    ngénieur d'etat en science géodésique et travaux topographique
    Inscrit en
    Septembre 2016
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : ngénieur d'etat en science géodésique et travaux topographique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2016
    Messages : 152
    Points : 65
    Points
    65
    Par défaut
    salut tyrtamos;
    Désolé, je n'ai pas répondu à vos réponses car j'étais occupé ces jours-ci et je ne pouvais pas utiliser l'ordinateur
    Merci beaucoup Le problème a été résolu par le merveilleux code que vous m'avez fourni

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. StringGrid sort
    Par clovis dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/10/2004, 21h46
  2. Couleur d'une JComboBox disabled
    Par ced dans le forum Composants
    Réponses: 6
    Dernier message: 06/01/2004, 15h33
  3. sorte de valeur par defaut
    Par sampq dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/07/2003, 11h59
  4. xsl:sort
    Par Pierre63 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 03/07/2003, 12h37
  5. JBuilder 7 personnal sort à chaque save
    Par Hannouz dans le forum JBuilder
    Réponses: 4
    Dernier message: 17/12/2002, 22h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo