2017-09-21 3 views
1

Cette arborescence a 5 colonnes avec une liste de détails des périphériques USB, il montre le nom de l'appareil, le modèle, le numéro de série et le statut, tout montre bien sur la liste, ce que j'essaie de réaliser code couleur le "statut" colonne seulement, si le "statut" est READ-WRITE puis codé en couleur comme ROUGE sinon VERT. Le code ci-dessous est actuellement le code couleur de la colonne entière en tant que ROUGE, il ne tient compte que des périphériques READ-ONLY. J'ai passé quelques heures à trouver la réponse en ligne, mais je n'en trouve aucune. Est-ce que quelqu'un peut m'aider avec ça ?Python Gtk.CellRendererText() couleur

def build_device_list(self): 
    self.dev_store_len = len(self.device_list_store) 
    for i, column_title in enumerate(["Device", "Model", "Serial Number","Size"]): 
     self.renderer = gtk.CellRendererText() 
     column = gtk.TreeViewColumn(column_title, self.renderer, text=i) 
     self.device_list_treeview.append_column(column) 
     column.set_sort_column_id(i) 
    self.renderer_status = gtk.CellRendererText() 
    column_status = gtk.TreeViewColumn("Status",self.renderer_status, text=4) 
    for x in range(0, self.dev_store_len): 
     if self.device_list_store[x][4] == "READ-WRITE": 
      self.renderer_status.set_property("foreground", "Red") 
      self.device_list_treeview.append_column(column_status) 
     else: 
      self.renderer_status.set_property("foreground", "Green") 
      self.device_list_treeview.append_column(column_status) 

    self.scrollable_treelist = gtk.ScrolledWindow() 
    self.scrollable_treelist.set_vexpand(True) 
    self.outter_box.pack_start(self.scrollable_treelist,False,True,0) 
    self.scrollable_treelist.add(self.device_list_treeview) 
+0

Quels sont les 2 astérisques par 'self.device_list_treeview.append_column (column_status) **'? – theGtknerd

+0

Je ne suis pas trop sûr, je n'ai pas remarqué qu'il y a deux astérisques. Je les ai enlevés. –

+0

Cela a-t-il résolu votre problème? – theGtknerd

Répondre

1

Pour tous ceux qui cherchent à cette question, voici le code de travail:

def build_device_list(self): 
    self.dev_store_len = len(self.device_list_store) 
    for i, column_title in enumerate(["Device", "Model", "Serial Number","Size"]): 
     self.renderer = gtk.CellRendererText() 
     column = gtk.TreeViewColumn(column_title, self.renderer, text=i) 
     self.device_list_treeview.append_column(column) 
     column.set_sort_column_id(i) 
    self.renderer_status = gtk.CellRendererText() 
    column_status = gtk.TreeViewColumn("Status",self.renderer_status, text=4, foreground=5) 
    self.device_list_treeview.append_column(column_status) 
    for x in range(0, self.dev_store_len): 
     if self.device_list_store[x][4] == "READ-WRITE": 
      self.device_list_store[x][5] = "Red"     
     else: 
      self.device_list_store[x][5] = "Green" 
    self.scrollable_treelist = gtk.ScrolledWindow() 
    self.scrollable_treelist.set_vexpand(True) 
    self.outter_box.pack_start(self.scrollable_treelist,False,True,0) 
    self.scrollable_treelist.add(self.device_list_treeview) 

Fondamentalement, vous avez besoin d'une colonne de liststore caché qui contient des valeurs de chaîne avec votre couleur. Ensuite, la colonne treeview nécessite l'attribut foreground défini sur cette colonne masquée.