3

がある場合gtk.CellRendererText、そのforeground色をツリーストアの列の1つに関連付け、foreground-set属性をTrueに設定して、その列のテキストの色を変更できます。ただし、色付きの列のある行を選択すると、その色は消え、選択したセルの色と同じになります。選択したときに色を変更するにはどうすればよいですか?

4

1 に答える 1

6

私は同じ問題を抱えていましたが、別の方法を試した後、markupプロパティの代わりにプロパティを使用するtextと問題が解決しました。以下とUbuntuMaverickで機能する例をご覧ください。

#!/usr/bin/python                               
import gtk


class Application(object):
    def __init__(self):
        window = gtk.Window()

        model = gtk.TreeStore(str)
        model.append(None, row=('Normal row',))
        model.append(None, row=('<span foreground="red">Red row</span>',))

        treeview = gtk.TreeView(model)
        renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn('Column', renderer, markup=0)
        treeview.append_column(column)

        scrolled_window = gtk.ScrolledWindow()
        scrolled_window.add(treeview)

        window.add(scrolled_window)
        window.connect('destroy', lambda w: gtk.main_quit())

        window.show_all()


    def run(self):
        gtk.main()


if __name__ == '__main__':
    Application().run()

私が取り組んでいる複数の列を持つより複雑なツリービューではmarkup、行が選択されていない場合、プロパティは機能していないようです。とにかく、プロパティmarkupforegroundプロパティの両方を同時に使用すると、正常に機能するようです。

于 2010-10-12T08:08:07.033 に答える