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 :

QTreeWidget [QtGui]


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    bul
    bul est déconnecté
    Membre confirmé Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 195
    Par défaut QTreeWidget
    bonjour à toutes et à tous,

    question d'un débutant de chez débutant, qui après une foultitude d'essais,
    de nombreuses recherches, ne parvient pas à 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
     
    import sys
    from PyQt4 import QtGui
    from PyQt4.QtGui import QTreeWidget
    class Dialogue(QtGui.QDialog):
    	def __init__(self):
    		super( Dialogue, self ).__init__()
    		self.gL=QtGui.QGridLayout()
    		self.tree=QTreeWidget()
    		self.tree.setHeaderLabels(["un","deux"])
    		for lig in range(3):
    			item = QtGui.QTreeWidgetItem()
    			for col in range(2):
    				item.setText( col, str(lig)+"/"+str(col) )
    			self.tree.addTopLevelItem(item)
    		self.gL.addWidget(self.tree, 0, 1, 1, 1 )
    		self.setLayout(self.gL)
    app=QtGui.QApplication( sys.argv )
    window=Dialogue()
    window.show()
    sys.exit( app.exec_()
    çà, çà baigne, mais... j'aimerais "regarder" toutes les lignes colonnes d'un
    QTreeWidget ( dont on ne connait ni le nombre de lignes , ni le
    nombre de colonnes : 3 lignes et 2 colonnes c'est pour l'exemple,
    l'utilisateur pourra en ajouter, en enlever )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for lig in ... :					# oui mais quoi, comment ?
    	for col in ... :				#		"
    		print ( tree[lig,col]... )		#		"
    si vous pouvez m'aider, m'aiguiller....
    merci d'avance.

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    self.tree.rowCount() et self.tree.columnCount() ne conviennent pas ?

  3. #3
    bul
    bul est déconnecté
    Membre confirmé Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 195
    Par défaut
    merci de ton intervention !
    alors :
    nbLig=self.tree.rowCount()
    AttributeError: 'QTreeWidget' object has no attribute 'rowCount'
    et pour self.tree[lig,col] .... ?

  4. #4
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    OOps, on est dans une arborescence, au temps pour moi.

    Je ne sais pas le tester dans l'immédiat mais je pense que QTreeWidget.items devrait te retourner la liste des items, les items ayant leurs méthodes .child(), .text(), .childCount(), tu pourras récupérer leurs propriétés.

    Je pensais avoir un exemple sous la main mais c'est un QTreeView ce qui n'est pas pareil.


    Edit: Je viens de voir ça:

    QWidget QTreeWidget.itemWidget (self, QTreeWidgetItem item, int column)

    Returns the widget displayed in the cell specified by item and the given column.

    Où donc, QTreeWidgetItem item représente un des items retournés par QTreeWidget.items

  5. #5
    bul
    bul est déconnecté
    Membre confirmé Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 195
    Par défaut
    on est dans une arborescence, au temps pour moi.
    il vous en prie !!


    bon, on progresse ( enfin, je )
    un machin dans ce style ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    mime=QMimeData()		
    nbCol=self.tree.columnCount()
    for lig in self.tree.items( mime ):
    	for col in range( nbCol ):
    		print( self.tree.itemWidget( lig, col) )
    sauf que je ne comprend pas QMimeData(),
    que du coup self.tree.items( mime ) renvoie [],
    que mettre dans ce QMimeData ?
    ( débutant oblige, navré )

  6. #6
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Je ne l'avais pas encore utilisé, mais le treeWidget semble moins souple d'utilisation que le treeView.

    J'ai été étonné de voir ce que se pouvait être compliqué de parcourir son contenu.

    Jusqu'à ce que je tombe sur ceci:

    http://www.riverbankcomputing.co.uk/...miterator.html

    Ce qui nous donne cet exemple basique

    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
     
    # -*- coding: utf-8 -*-
     
    import sys
    import os
     
    from PyQt4 import QtCore, QtGui
     
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.resize(563, 562)
            self.centralwidget = QtGui.QWidget(MainWindow)
            self.gridLayout = QtGui.QGridLayout(self.centralwidget)
            self.tree = Tree(self, self.centralwidget)
            self.tree.headerItem().setText(0, "1")
            self.gridLayout.addWidget(self.tree, 0, 0, 1, 1)
            MainWindow.setCentralWidget(self.centralwidget)
     
            self.tree.walk_into_tree()
     
     
    class Tree(QtGui.QTreeWidget):
        def __init__(self, main, parent=None):
            super(Tree, self).__init__(parent)
            self.main = main
            self.setColumnCount(3)
            self.setAlternatingRowColors(True)
            self.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
     
            items = [["Alpha", ["Beta"]], ["Gama", ["Delta", "Eta"]], ["Iota", ["Mu", "Nu"]]]
            for item in items:
                p = QtGui.QTreeWidgetItem(self)
                p.setText(0, item[0])
                for i in item[1]:
                    c = QtGui.QTreeWidgetItem(p)
                    c.setText(1, i)
     
        def walk_into_tree(self):
            it = QtGui.QTreeWidgetItemIterator(self)
            while it.value() is not None:
                print it.value().text(0)
                print "\t", it.value().text(1)
                it += 1
     
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        MainWindow = QtGui.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)
        MainWindow.show()
        sys.exit(app.exec_())
    Evidement, au niveau des widgets enfants, il faudra que tu réitère à l'intérieur des parents, mais le principe est là.



    Edit: Et en plus, la méthode David Boddie, un iterateur python:

    http://www.riverbankcomputing.com/pi...ly/016823.html

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 25/09/2009, 19h07
  2. QTreeWidget + couleur + taille
    Par nada114 dans le forum Qt
    Réponses: 3
    Dernier message: 06/03/2008, 15h17
  3. Réponses: 4
    Dernier message: 05/03/2008, 14h26
  4. Réponses: 9
    Dernier message: 20/01/2008, 15h16
  5. Réponses: 1
    Dernier message: 08/01/2008, 17h08

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