2012-07-03 115 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