2017-09-21 14 views
1

このツリービューには、デバイス名、モデル、シリアル番号、ステータスが表示されている5列のUSBデバイスの詳細が表示されます。色コード "状態" 列のみ、 "ステータス"がREAD-WRITEの場合は赤色で色分けされ、それ以外の場合は緑色です。以下のコードは現在、カラーコードの列全体がREDであるため、READ-ONLYデバイスは無視されています。私は答えをオンラインで見つけるのに数時間を費やしましたが、何も見つけることができません。誰もこれで私を助けることができますか?この質問を見ている人のためにPython Gtk.CellRendererText()color

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

'self.device_list_treeview.append_column(column_status)**'の2つのアスタリスクは何ですか? – theGtknerd

+0

あまりにも確信が持てません。アスタリスクが2つあります。私はそれからそれらを削除しました。 –

+0

これで問題は解決しましたか? – theGtknerd

答えて

1

、ここでの作業コードは次のとおりです。

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) 

基本的に、あなたの色で文字列の値を保持する隠しliststore列を必要としています。次に、treeview列には、その非表示列に設定されたフォアグラウンド属性が必要です。