2011-04-28 103 views
3

我看到處處都是,但似乎無法找到更改邊框顏色的方法。 比如我需要一個按鈕是這樣的:Pygtk:更改窗口小部件的邊框顏色

gb = gtk.Button("Hi") 
gb.set_border_width(50) 

現在我要用顏色邊框的紅色(這是一個不存在的調用):

gb.set_border_color('red') 

我試圖gb.modify_bg(.. ),但它只會改變按鈕的背景,而不是圍繞它的BORDER。我可以得到的最基本的東西是將此GtkButton添加到GtkFrame中,並使用該框架的陰影顏色。然而,陰影框的寬度是固定的 - 這是在我想要的厚度以下的細線。

對我來說,如果你可以改變邊框的寬度,你應該可以設置更多的樣式。我可以採用其他方法來達到相同的厚邊框效果,例如將按鈕放在一些大的彩色背景上?

感謝您的任何幫助。

+1

我想這是主題的工作,而不是代碼。由於用戶可能會使用按鈕的邊框爲漸變(從一種顏色到另一種顏色)的主題,並且您將用一種顏色覆蓋按鈕(邊框)的那一部分,並且可能使其變得很難看!如果可能的話,我認爲這不是一個好主意。 – saeedgnu 2011-04-28 05:02:15

+0

你能否提供一個改變邊框顏色的例子主題?我無法找到相關的gtkrc樣式。謝謝。 – 2011-04-28 20:47:36

+0

@ilius:是的,這是主題的工作,但在某些情況下,您可能需要明確定義它。 – 2011-09-04 11:36:55

回答

5

AFAIR,gtk.Button邊界處理是依賴於引擎的。如果你不想使用樣式一塌糊塗,你可以創建gtk.EventBox,設置它的背景顏色,包裝按鈕,然後設置的空白空間量周圍的按鈕所需的值:

button = gtk.Button("Click me") 
button.set_border_width(50) 
eb = gtk.EventBox() 
eb.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("pink")) 
eb.add(button) 
+0

這確實解決了我原來的問題!我很好奇我會如何混淆樣式以真正爲按鈕邊框着色。你有一個工作樣式嗎?謝謝! – 2011-04-28 20:59:38

+0

@e_x_p:不,我已經停止覆蓋很久以前的主題樣式:)您可能想要檢查http://faq.pygtk.org部分「4.主題,字體和樣式」,它有幾個例子可能會給你有些見解。 – 2011-04-29 15:02:59