在按钮上没有显示的储蓄象

时间:2010-02-02 23:51:26

标签: python gtk pygtk

self.button = gtk.Button(stock=gtk.STOCK_DELETE)

仅显示: 删除

7 个答案:

答案 0 :(得分:14)

用于设置属性而不必更改任何系统配置文件的Python等价物是:

settings = gtk.settings_get_default()
settings.props.gtk_button_images = True

这应该跟随对window.show()的调用,显然,在gtk.main()循环之前。

答案 1 :(得分:9)

这是GTK最近的一次变化 - 开发人员希望图标不会出现在按钮上。在Linux上,可以通过编辑gconf密钥

来更改
/desktop/gnome/interface/buttons_have_icons

在Windows上,我认为(我实际上没有试过这个)你需要在你的gtkrc文件中设置一个值(对我来说它在C:\Program Files\Gtk+\etc\gtkrc中)并使用支持图标的主题(我认为默认的不是)。

您也可以在设置主题之后将gtk-button-images = 1添加到~/.gtkrc-2.0文件,这可能会超过gconf的选项。

编辑回答您的评论:

就像这个答案一样,但在Python中:In Gtk, how do I make a Button with just a stock icon?

对于python,它只是

image = gtk.Image()
#  (from http://www.pygtk.org/docs/pygtk/gtk-stock-items.html)
image.set_from_stock(gtk.STOCK_**)
button = gtk.Button()
button.set_image(image)
button.set_label("")

答案 2 :(得分:2)

我必须这样做才能在不改变配置文件的情况下从Python开始工作。当我调用set_image()时,没有显示任何图像。

image = gtk.Image()
image.set_from_stock(gtk.STOCK_**, gtk.ICON_SIZE_BUTTON)
button = gtk.Button()
button.add(image)
button.show()

答案 3 :(得分:2)

如果使用pygobject,则新语法为:

image.set_from_stock(gtk.STOCK_**, Gtk.IconSize.BUTTON)

答案 4 :(得分:1)

我在Windows上的GTKmm中遇到了同样的问题。 “MS-Windows”主题禁用了库存按钮上的图像,主题优先于gtkrc中的设置(因此在gtkrc中放置gtk-button-images = true没有帮助)。我所做的是修改GTK设置运行时,图像按预期显示。 :)这是C ++中的代码:


Glib::RefPtr<Gtk::Settings> settings = Gtk::Settings::get_default();
/* force using icons on stock buttons: */
settings->property_gtk_button_images() = true; 

它应该在构建第一个窗口后放置。

答案 5 :(得分:0)

Gtk3 gtk.STOCK方法中的

deprecated from v3.10

  

自版本3.10后不推荐使用:使用Gtk.Button.new_with_label()   代替。

如果它没有帮助,因为它指向自定义标签解决方案(new_with_label)如果你想使用STOCK东西,你仍然可以使用新方法Gtk.Button.new_from_icon_name(icon_name, size)和{{1这将分别创建带有股票图标和标签的新按钮。

示例新按钮,其中包含“库存”图标

Gtk.Button.new_with_mnemonic(label)

示例带有“库存”标签的新按钮

button = Gtk.Button.new_from_icon_name ("edit-paste", Gtk.IconSize.SMALL_TOOLBAR)

注意:在严格的代码上创建常量变量而不是直接使用字符串是一个更好的选择:)

参考文献:

答案 6 :(得分:-1)

你可以明确地显示按钮图像,只是,Gtk +开发人员不建议这样做,因为它覆盖了Gtk +用户配置。

因此...

button.get_image().show()