OVH Cloud OVH Cloud

ListStore

2 réponses
Avatar
Pascal Chenevas-Paule
Bonjour,

Je souhaites afficher une liste d'élément dans une colonne pour celà
j'ai dessiné à l'aide de Glade un TreeVieW, j'ai ensuite créé le code
suivant :

# Importation des modules
import pygtk
import gtk.glade
import gobject

# Capture des signaux
liste.signal_autoconnect(globals())

# Récupération du TreeView
Tv0 = liste.get_widget("Tv0_WIndex")
# Création d'une ListeStore : 1 colonne de type String
Model = gtk.ListStore(str)
# Connexion du Model avec le TreeView
Tv0.set_model(Model)
# Cellule
cell0 = gtk.CellRendererText()
# Définition de la Colonne 0
Col0 = gtk.TreeViewColumn("First Name ", cell0, text=0)
# Ajout de la colonne au TreeView
Tv0.append_column(Col0)
# Ajout d'une ligne
row = (["Coucou"])
Model.append(row)

Résultat : Seul le titre de la colonne s'affiche.

Si je remplace row = (["Coucou"]) par ("Coucou") j'obtiens le message
d'erreur suivant :

Traceback (most recent call last):
File "./liste.py", line 58, in ?
Model.append(row)
ValueError: row sequence has wrong length

Merci,

Pascal

2 réponses

Avatar
tiissa
Pascal Chenevas-Paule wrote:
Si je remplace row = (["Coucou"]) par ("Coucou") j'obtiens le message
d'erreur suivant :

Traceback (most recent call last):
File "./liste.py", line 58, in ?
Model.append(row)
ValueError: row sequence has wrong length


Si tu veux un tuple de longueur 1, il faut écrire ("Coucou",).
("Coucou") est une chaîne entourée de parenthèse, et donc une séquence
de longueur 6 (d'où l'erreur je suppose).
De même, (["coucou"]) est une liste de longueur 1 et les parenthèses
sont inutiles.

Pour ton problème de ListStore, je ne sais pas par contre.

Avatar
Pascal Chenevas-Paule
Pascal Chenevas-Paule wrote:
Bonjour,

Je souhaites afficher une liste d'élément dans une colonne pour celà
j'ai dessiné à l'aide de Glade un TreeVieW, j'ai ensuite créé le code
suivant :

# Importation des modules
import pygtk
import gtk.glade
import gobject

# Capture des signaux
liste.signal_autoconnect(globals())

# Récupération du TreeView
Tv0 = liste.get_widget("Tv0_WIndex")
# Création d'une ListeStore : 1 colonne de type String
Model = gtk.ListStore(str)
# Connexion du Model avec le TreeView
Tv0.set_model(Model)
# Cellule
cell0 = gtk.CellRendererText()
# Définition de la Colonne 0
Col0 = gtk.TreeViewColumn("First Name ", cell0, text=0)
# Ajout de la colonne au TreeView
Tv0.append_column(Col0)
# Ajout d'une ligne
row = (["Coucou"])
Model.append(row)

Résultat : Seul le titre de la colonne s'affiche.

Si je remplace row = (["Coucou"]) par ("Coucou") j'obtiens le message
d'erreur suivant :

Traceback (most recent call last):
File "./liste.py", line 58, in ?
Model.append(row)
ValueError: row sequence has wrong length

Merci,

Pascal

Bon j'ai pigé l'erreur,

en fait par défaut (chez moi) dans glade lorsque je créer une TreeVieW
il ne me fait apparaître que l'entête des colonnes, c'est à moi ensuite
à mettre la bonne "height" dans l'onglet "Common" pour voir la liste.
En fait le code est bon