2012-07-03 66 views
1

我与方法override_background_color成功地改变一个Gtk.TextView(GTK3)的背景颜色:背景颜色 - 不能看到选择

color.parse(self.settings.get_string("bgcolor")) 
self.ui.NoteView.override_background_color(Gtk.StateType.NORMAL,color) 

我还覆盖前景色。 不幸的是,在这种情况下,在文本中做出选择是不可见的。 如何修改TextView的背景和前景色而不丢失可见的文本选择?

回答

0

最好使用GtkTextTags格式化GtkTextView中的文本。您可以将任何类型的文本格式(背景&前景色,字体,大小,重量等)应用于文本的任何部分。

点击here为例。 希望有所帮助!

顺便说一句,你正在做的是改变你的TextView的风格。在Gtk最好远离这样做,特别是如果你不在控制环境中或计划将软件发布给其他人使用,因为gtk的理念是将样式和主题留给最终用户使用个人接触/需求。 这就是为什么你通过重写样式颜色来获得一些不想要的结果。 根据GtkTextView确实然而,通过使用GtkTextTags提供简单的文本格式(甚至支持添加图像/小部件),如上面的链接所示。

+0

- 谢谢我明白,但我希望用户通过偏好窗口更改textview的bg和fg颜色(仅用于定制)。这个文本视图只保存纯文本格式。覆盖会好,如果我可以为选定的文本设置它,但是这self.ui.NoteView.override_background_color(Gtk.StateType.SELECTED,scolor)不起作用。我想我需要在选择更改时在文本上应用标签。我对吗? – sipiatti

+0

在选择更改时应用标记可能是解决这个问题的最安全的方法。但是如果你真的想要重写主题,那么也请看一下'widget.modify_base'。这可能会影响'GtkTextView'的选择颜色,但我不确定。 – Wes