Python Gtk.CellRendererText()color

时间:2017-09-21 04:08:56

标签: python-3.x gtk3 renderer listcellrenderer cellrenderer

这个树视图有5列,其中包含usb设备详细信息列表,它显示设备名称,型号,序列号和状态,它在列表中显示正常,我想要实现的是颜色代码“状态” 仅限列,如果“状态”为READ-WRITE,则颜色编码为RED,否则为绿色。下面的代码目前是整个列的颜色代码为RED,它只是忽略任何READ-ONLY设备。我花了几个小时在网上找到答案但找不到任何答案。任何人都可以帮我这个吗?

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)

1 个答案:

答案 0 :(得分:1)

对于任何看过这个问题的人来说,这是工作代码:

    Dim InputStringDing As String = InputTxtBox.Text.ToLower
    Select Case True
        Case InputStringDing.Contains("water")
            OutputRTB.Text += "Tommy: " & "Water falls from the sky!"
    End Select

基本上,您需要一个隐藏的liststore列,其中包含您的颜色的字符串值。然后树视图列需要将前景属性设置为该隐藏列。