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 :

QTreeView ne partant pas de /


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut QTreeView ne partant pas de /
    Bonjour,

    en fait je galère depuis ce matin...

    je voulais me faire un truc tout simple de scan de dossier affichant l'arborescence dans un QTreeWidget, galérant avec cette fameuse arborescence, je me dis que je vais passer par un QTreeView avec un QFileSystemModel.

    C'est sur que ça fonctionne bien et c'est rapide... mais je n'arrive pas à n'afficher le contenu que d'un dossier, quoi que je teste à chaque fois il m'affiche toute l'arborescence du pc en partant de /...

    y a t il un moyen de ne pas tout afficher mais uniquement à partir du dossier /home/hizo/Test par exemple ?!

    je suis ouvert à toute proposition

    merci à vous et bon week end.
    Sous Kubuntu 20.04

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut Hizoka,

    Comme ceci je n'affiche que à partir d'un dossier précis (je mets le code tel que je l'ai sous les yeux)
    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
     
        def set_source(self, folder):
            """Sets the source folder.
     
            Args:
            folder -- full path of source folder
            """
            folder = folder.rstrip(os.path.sep)
            self.root = os.path.dirname(folder)
            self.dirModel = QtGui.QFileSystemModel()
            self.dirModel.setRootPath(QtCore.QDir.homePath())
            self.setModel(self.dirModel)
            self.setRootIndex(self.dirModel.index(self.root)) 
            self.setWordWrap(True)
            self.hideColumn(1)
            self.hideColumn(2)
            self.hideColumn(3)
            idx = self.dirModel.index(folder)
            self.expand(idx)
    donc, dans ton cas folder sera /home/hizo/Test et il me semble me souvenir que "folder = folder.rstrip(os.path.sep)" était indispensable ...

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Salut,

    merci pour ta réponse mais chez moi ça ne change rien... il m'affiche toujours depuis /.

    du coup j'utilise ça avec un TreeWidget:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        def test(self, Papa, Folder):
            for Item in Folder.glob("*"):
                if Item.is_file():
                    self.ui.project_files.setCurrentItem(QTreeWidgetItem(Papa, [Item.name], 0))
     
                else:
                    self.test(QTreeWidgetItem(Papa, [Item.name], 0), Item)
     
     
     
            TopLevel = QTreeWidgetItem(self.ui.project_files, [ProjectName], 0)
            self.ui.project_files.setCurrentItem(TopLevel)
     
            self.test(TopLevel, ProjectFolder)
    Sous Kubuntu 20.04

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Oui effectivement je pars du dossier parent, si tu changes self.root alors ton treeview commencera bien par le dossier que tu lui passes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            self.root = folder

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Perso ça ne change rien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            self.folder = str(Configs["ProjectName"]).rstrip(os.path.sep)
            self.root = self.folder
            self.dirModel = QFileSystemModel()
            self.dirModel.setRootPath(QDir.homePath())
            self.ui.treeView.setModel(self.dirModel)
            self.ui.treeView.setRootIndex(self.dirModel.index(self.root))
            self.ui.treeView.setWordWrap(True)
            self.ui.treeView.hideColumn(1)
            self.ui.treeView.hideColumn(2)
            self.ui.treeView.hideColumn(3)
            self.idx = self.dirModel.index(self.folder)
            self.ui.treeView.expand(self.idx)
    Sous Kubuntu 20.04

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour hizoka,

    Je me rappelle avoir eu des problèmes pour avoir un répertoire racine voulu.

    Voilà un petit code qui a l'air de faire le boulot chez moi (Windows):

    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
    #! /usr/bin/python
    # -*- coding: utf-8 -*-
    # Python v3
     
    import sys
    import os
    from PyQt5 import (QtWidgets, QtCore)
     
    class Arbodisk(QtWidgets.QWidget):
     
        def __init__(self):
            super().__init__()
            self.resize(400, 300)
     
            # répertoire racine pour le QTreeView
            rephome = QtCore.QDir.homePath()
     
            #-- Modèle
            self.myModel = QtWidgets.QFileSystemModel()
            self.myModel.setReadOnly(False)
            self.myModel.setRootPath(rephome)
     
            #-- treeview
            self.myTreeView = QtWidgets.QTreeView(self)
            self.myTreeView.setModel(self.myModel)
     
            rootModelIndex = self.myModel.index(rephome)
            self.myTreeView.setRootIndex(rootModelIndex)
     
            # positionnement dans le fenêtre
            posit = QtWidgets.QGridLayout()
            posit.addWidget(self.myTreeView, 0, 0)
            self.setLayout(posit)
     
    ##############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        fen = Arbodisk()
        fen.show()
        end = app.exec_()
    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

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Merci pour ton code test, il m'a permis de voir que la fonctionne mais que le problème vient de mon script ou du moins de QtCreator.

    je vais pousser un peu plus loin le truc.

    merci !

    EDIT : C'est bon ça fonctionne ! merci
    Sous Kubuntu 20.04

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

Discussions similaires

  1. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  2. LIMIT partant d'une ligne précise (pas offset)
    Par manthoR dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/09/2007, 16h49

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