2011-09-22 93 views
0

我向HBox添加一个按钮,展开等于False,但我希望按钮的标签和边框之间有更多的间距。我认为它是“内部边界”属性,但它是只读的。我怎样才能将它设置为4PX?Gtk按钮内边框

回答

2

gtk.Label是gtk.Misc的子类,它有set_padding方法。如果你从gtk.Button获得标签,那么你可以在它上面调用set_padding。

你可以这样做:

label = gtk.Label("Hello World") 
button = gtk.Button() 

/* Add 10 pixels border around the label */ 
label.set_padding(10, 10) 

/* Add the label to the button */ 
button.add(label) 

/* Show the label as the button will assume it is already shown */ 
label.show() 
+0

谢谢,就是这样! :) py代码,如果有人需要它:some_btn.get_children()[0] .set_padding(10,10) – Marin

0

我有时只是在标签中添加空格!

gtk.Button(" Label ") 

得到一些间距。

希望这可以帮助你。

+0

嘿,它的工作原理,但它是不是一个真正的“合法”的方式。没有一个合适的方法来实现这一点? – Marin

+2

来吧,这是一个丑陋的解决方法... – liberforce

0

你可以使用gtk按钮的“inner-border”样式属性。

这里,小代码片段

In gtkrc file: 

    style "button_style" 
    { 
    GtkButton::inner-border = {10,10,10,10} 
    } 
    class "GtkButton" style "button_style" 

In .py file: 

    gtk.rc_parse(rc_file_path + rc_file) 

[编辑]

在gtkrc文件:

style "button_style" 
    { 
    GtkButton::inner-border = {10,10,10,10} 
    } 
    widget "*.StyleButton" style "button_style" # apply style for specific name of widget 


In .py file: 

    gtk.rc_parse(rc_file_path + rc_file) 

    #set name of button 
    self.style_button.set_name('StyleButton') 

希望,这将是有益的。

+1

这将改变所有的按钮,我只需要改变这一个按钮。 – Marin

+1

请检查编辑过的块。希望,它可以提供帮助。 – Yajushi

1

错误答案:

什么你正在寻找被称为“填充”。当您将按钮添加到容器时,例如通过调用gtk.Box.pack_start,只需将padding参数设置为正整数。

更新:

我似乎误解了问题。在这种情况下,我的猜测是你应该使用gtk_widget_modify_style,因为inner-border是一个样式属性。通过调用gtk_widget_get_modifier_style,您将首先获得所需的样式修改器。然后,您只能使用ressource styles matching rules修改该按钮的样式。

+0

问题是按钮的内部边框,而不是填充。 – Marin

+0

我已经修复了我的答案(但是您需要从C改为Python),请重新考虑它... – liberforce