2011-04-28 100 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