قم بتعيين اللون المقدمة في CellRenderErtext عند تسليط الضوء على صف

StackOverflow https://stackoverflow.com/questions/3629386

سؤال

عندما يكون لدي gtk.CellRendererText, ، يمكنني ربطها foreground اللون مع أحد أعمدة متجر الأشجار ، وضبط foreground-set تنسب إلى True ، لتغيير لون النص في هذا العمود. ومع ذلك ، عندما يتم تحديد الصف مع العمود الملون ، يختفي لونه ، وهو نفس لون خلية محددة. كيف يمكنني تغيير اللون عند اختياره؟

هل كانت مفيدة؟

المحلول

لقد واجهت نفس المشكلة ، وبعد تجربة بدائل مختلفة ، باستخدام markup الممتلكات بدلا من text خاصية حل المشكلة. يرجى العثور أدناه والمثال الذي يعمل في Ubuntu Maverick:

#!/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()

في لعبة TreeView أكثر تعقيدًا مع الأعمدة المتعددة التي أعمل عليها ، markup لا يبدو أن الخاصية تعمل عندما لا يتم تحديد الصف. على أي حال ، استخدام كليهما markup و foreground يبدو أن الخصائص في نفس الوقت تعمل بشكل جيد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top