Python 按钮上未显示库存图标

Python 按钮上未显示库存图标,python,gtk,pygtk,Python,Gtk,Pygtk,仅显示: 删除这是GTK最近的一个变化-开发者希望图标不要出现在按钮上。在Linux上,这可以通过编辑gconf键来更改 self.button = gtk.Button(stock=gtk.STOCK_DELETE) 在windows上,我认为(实际上我还没有尝试过)您需要在gtkrc文件中设置一个值(对我来说,它位于C:\Program Files\Gtk+\etc\gtkrc),并使用支持图标的主题(我认为默认的不支持) 设置主题后,您还可以将gtk按钮图像=1添加到~/.gtkrc-2

仅显示:
删除

这是GTK最近的一个变化-开发者希望图标不要出现在按钮上。在Linux上,这可以通过编辑
gconf
键来更改

self.button = gtk.Button(stock=gtk.STOCK_DELETE)
在windows上,我认为(实际上我还没有尝试过)您需要在gtkrc文件中设置一个值(对我来说,它位于
C:\Program Files\Gtk+\etc\gtkrc
),并使用支持图标的主题(我认为默认的不支持)

设置主题后,您还可以将
gtk按钮图像=1
添加到
~/.gtkrc-2.0
文件中,该主题可能会覆盖
gconf
中的选项

编辑回答您的评论:

与此答案相同,但在Python中:

对于python,它只是

/desktop/gnome/interface/buttons_have_icons

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

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("")

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

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

Glib::RefPtr settings=Gtk::settings::get_default();
/*强制在库存按钮上使用图标:*/
设置->属性按钮图像()=true;

应在构造第一个窗口后放置该属性。

在不必更改任何系统配置文件的情况下设置属性的Python等价物是:


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

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

您可以显式显示按钮图像,gtk+开发人员不建议这样做,因为它会覆盖gtk+用户配置

所以


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

button.get_image().show()

在Gtk3
gtk.STOCK
方法中,已使用

自版本3.10起已弃用:使用带有_标签的Gtk.Button.new_() 相反

在这种情况下,它没有帮助,因为它指向自定义标签解决方案(
new_with_label
),如果您想使用库存材料,您仍然可以使用新方法
Gtk.Button.new_from_icon_name(icon_name,size)
Gtk.Button.new_with_助记符(label)
将分别创建带有库存图标和标签的新按钮

带有“stock”图标的新按钮示例:

image.set_from_stock(gtk.STOCK_**, Gtk.IconSize.BUTTON)
带有“库存”标签的新按钮示例:

button = Gtk.Button.new_from_icon_name ("edit-paste", Gtk.IconSize.SMALL_TOOLBAR)
注意:在严肃的代码中,创建常量变量而不是直接使用字符串是更好的选择:)

参考资料:


此答案可能会对您有所帮助:谢谢您的及时回答。你知道如何从按钮中删除图标的文本部分吗?我在编辑中回答了你的评论-这基本上就像Trent在对原始问题的评论中提出的问题。@DanielG你需要在Windows中更改什么值?我必须使用gtk.ICON_SIZE_按钮如果有人想在C中这样做,
GtkSettings*settings=gtk_settings_get_default();g_对象_集(设置,“gtk按钮图像”,真,空)是等效的过程。
button = Gtk.Button.new_from_icon_name ("edit-paste", Gtk.IconSize.SMALL_TOOLBAR)
button = Gtk.Button.new_with_mnemonic("_Open")