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 :

affichage d'une liste des fichiers dans un QTableView


Sujet :

PyQt Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut affichage d'une liste des fichiers dans un QTableView
    salut je suis en cours d'apprand le pyqt et j'ai un projet a fair je veux afficher une liste des chemins des fichiers dans un QTableView

    comme sa

    Nom : 362321100.png
Affichages : 379
Taille : 33,0 Ko

    list des chemins :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     list_file=['/home/bamz/Bureau/test/file1.txt', '/home/bamz/Bureau/test/file2.txt', '/home/bamz/Bureau/test/test1/file3.txt', '/home/bamz/Bureau/test/test2/file5.txt', '/home/bamz/Bureau/test/test2/file4.txt']
    j'aime bien voir un example et mrc

  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,

    On peut utiliser un QStringListModel pour ça.

    Exemple simple:

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from __future__ import division, print_function, unicode_literals
    # Python 2.7
     
    import sys, os
    from PyQt4 import QtCore, QtGui
     
    #############################################################################
    class Fenetre(QtGui.QWidget):
     
        def __init__(self, parent=None):
            super(Fenetre, self).__init__(parent)
            self.resize(800, 600)
     
            data = ['/home/bamz/Bureau/test/file1.txt', 
                    '/home/bamz/Bureau/test/file2.txt', 
                    '/home/bamz/Bureau/test/test1/file3.txt', 
                    '/home/bamz/Bureau/test/test2/file5.txt', 
                    '/home/bamz/Bureau/test/test2/file4.txt']
     
            model = QtGui.QStringListModel()        
            model.setStringList(data)
     
            self.tablevue = QtGui.QTableView(self)
            self.tablevue.setModel(model)
            self.tablevue.resizeColumnsToContents()
     
            posit = QtGui.QGridLayout()
            posit.addWidget(self.tablevue, 0, 0)
            self.setLayout(posit)
     
    #############################################################################
    if __name__ == '__main__':
        app = QtGui.QApplication(sys.argv)
        fen = Fenetre()
        fen.setAttribute(QtCore.Qt.WA_DeleteOnClose)
        fen.show()
        sys.exit(app.exec_())
    Quand on modifie les chaines de la liste, la liste initiale data n'est pas modifiée. On récupère la liste modifiée avec:

    data2 = [str(ch) for ch in list(self.tablevue.model().stringList())]

    On peut ajouter un peu de code au script précédent pour le visualiser: un simple Alt-X affichera la liste modifiée en console:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        # =======================================================================
        def keyPressEvent(self, event):
            if self.tablevue.hasFocus():
                if event.key() == QtCore.Qt.Key_X and \
                                       (event.modifiers() & QtCore.Qt.AltModifier):
                    data2 = [str(ch) for ch in list(self.tablevue.model().stringList())]
                    print(data2)
                    event.accept()
                else:
                    event.ignore()
            else:
                event.ignore()
    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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/09/2014, 21h18
  2. Réponses: 1
    Dernier message: 06/02/2009, 17h58
  3. Réponses: 0
    Dernier message: 11/02/2008, 18h01
  4. Réponses: 1
    Dernier message: 05/03/2007, 20h51
  5. Réponses: 1
    Dernier message: 24/05/2006, 11h00

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