2013-03-06 33 views
3

我在我的應用程序中有一個Gtk.Entry()的列表,我想更改其中一些文本的顏色。如何更改Python3中的Gtk3條目文本顏色?

我試過如下:

#!/usr/bin/python3 
# Filename: mywindow.py 

from gi.repository import Gtk 
from gi.repository import Gdk 

class MyWindow(Gtk.Window): 
    def __init__(self): 
     Gtk.Window.__init__(self, title="My window") 

     self.mainGrid = Gtk.Grid() 
     self.add(self.mainGrid) 

     self.myOkEntry = Gtk.Entry() 
     self.myOkEntry.set_text("This is OK (green)") 
     self.myOkEntry.override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0.0, 1.0, 0.0, 0.0)) 

     self.mainGrid.add(self.myOkEntry) 

mainWin = MyWindow() 
mainWin.connect("delete-event", Gtk.main_quit) 
mainWin.show_all() 

Gtk.main() 

但隨後的文本也看不見。我嘗試了0.0到1.0的Gdk.RGBA的不同值,0到65000的值也是一樣的。 另一個測試:

print(Gdk.color_parse("green")) 

打印:

<Gdk.Color(red=0, green=65535, blue=0)> 

所以,我想:

print(Gdk.RGBA(Gdk.color_parse("green"))) 

但是:

File "/usr/lib/python3/dist-packages/gi/overrides/Gdk.py", line 55, in __init__ 
    self.red = red 
TypeError: argument 2: Must be number, not Color 

我有點困惑。 我使用的單證主要有:
https://python-gtk-3-tutorial.readthedocs.org/en/latest/
https://developer.gnome.org/gtk3/stable/

我發現關於CSS樣式一些文件,我可以用它喜歡:

GtkEntry { 
    color: #000000 
} 
GtkEntry#ok { 
    color: #00cc00 
} 
GtkEntry#error { 
    color: #cc0000 
} 

像HTML比如?這個文檔在前面的問題中被鏈接到Python3/Gtk3Entry color

那麼,我的問題是:如何在不修改其他顏色的情況下更改一個Gtk.Entry

+0

也許這能讓你走向正確的方向嗎? http://stackoverflow.com/questions/13187207/setting-selected-property-of-row-in-treeview-dynamically-in-gtk3-python – deinonychusaur 2013-04-14 11:02:53

回答

2

設置alpha通道至1.0:

self.myOkEntry.override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0.0, 1.0, 0.0, 1.0)) 
+0

它的工作原理。這正是我期待的,謝謝Jörg。 – 2015-01-09 14:07:52

1

可以使用gtk.Widget.modify_fg(窗口小部件是所述基類gtk.Entry中的一個)與color_parse邏輯像這樣:

self.myOkEntry.modify_fg(Gtk.StateFlags.NORMAL, Gdk.color_parse("green")) 
+0

謝謝你cwgem,它的工作。 – 2013-03-07 08:11:51

+0

在此方法的GTK3文檔中: gtk_widget_modify_fg自版本3.0起已棄用,不應在新編寫的代碼中使用。改用gtk_widget_override_color()。 因此,我現在將使用modify_fg(),但我正在尋找一個標準的Gtk3解決方案。 – 2013-03-07 08:17:32