2015-09-07 32 views
0

我用python代碼編寫gtk接口。問題是:Gtk。小部件 - 不能改變bg顏色。 Pygtk

初始化錄入組件由gtkbuilder:

self.some_entry = self.builder.get_object('SomeEntry')

通過輸入按鈕定義信號,然後後必須更改的條目顏色:

def on_SomeButton_clicked(self, widget): self.some_entry.modify_bg(Gtk.StateType.NORMAL,Gdk.Color(20000,10000,10000))

,但它不工作,如'modify_base'。我不知道爲什麼。請幫助。 對不起,我的英語(

+0

與GtkTextView它的作品,但它gtkwidget太 –

+0

它似乎是這樣的:http://stackoverflow.com/questions/15245886/how-do-i-change-a-gtk3-entry-text-color- in-python3但代替背景,而override_background_color(Gtk.StateFlags.NORMAL,Gdk.RGBA(0.0,1.0,0.0,1.0))沒有幫助 –

回答

0

EDIT2: 原來這是一個輸入框讓這本身並另一個問題的問題,因爲背景是不是你需要修改屬性,但基本顏色屬性,它通常可以利用設置:

self.entry.override_background_color(Gtk.StateType.Normal, Gdk.RGBA(0.0, 1.0, 0.0, 1.0)) 

但是對於OP它不工作,所以一個CSS的選擇進行了探討,在上市:https://mail.gnome.org/archives/gtk-app-devel-list/2005-November/msg00236.html

編輯: 因此,與PyGtk3工作,我能得到一個按鈕,使用變色你的代碼行:

self.button.modify_bg(Gtk.StateType.Normal, Gdk.Color(20000, 10000, 10000)) 

初始化時灰色,代碼運行後呈暗紅色。我唯一能想到的就是在運行代碼後確保你試圖修改的對象實際上處於NORMAL狀態,並確保你認爲觸發的信號實際上是觸發的。

==============

原帖:

沒有在這裏有完整的代碼有可能會造成這幾件事情。我只是在Python扔在一起的測試程序基於關閉的:http://pygtk.org/pygtk2tutorial/examples/helloworld.py

當我設置GTK的國家爲modify_bg我不得不使用:

gtk.STATE_NORMAL 

不知道這是由於不同版本的Gtk或什麼。 後來,當我去使用GDK,我不得不把它稱爲:

gtk.gdk 

,我結束了與更改按鈕顏色的線是:

self.button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(20000, 10000, 10000)) 

希望可以算出,在爲了得到更詳細的內容,雖然我們肯定需要更多的代碼,並且知道你得到的是哪種錯誤。

+0

謝謝,但它有用的另一個版本。 –

+0

我使用gtk3&python3。我一直在尋找文檔很長一段時間,因爲gtk.STATE_NORMAL - 舊類型,它不適合我。 –

+0

是的,在我的工作計劃中沒有警告。 –

1

嗯,我已經得到解決方案。 CSS的作品,下面的代碼:

style_provider = Gtk.CssProvider() 
    css = open('style.css', 'rb') 
    css_data = css.read() 
    css.close() 
    style_provider.load_from_data(css_data) 
    Gtk.StyleContext.add_provider_for_screen(
     Gdk.Screen.get_default(), 
     style_provider, 
     Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) 

隨着線

「widgetname」 .get_style_context()。add_class(「colorize」)

「widgetname」hase colorized。

CSS代碼:

.colorize { 

      background: rgba(200,50,50,0.3); 
    } 

感謝您的幫助!我希望這會對別人有用)

已關閉。