我怎么能动态改变用glade创建的按钮的图标?
______________________ 上次修改 _________________________________________
我正在尝试这个:
self.button_waiting=self.builder.get_object('button_waiting')
image=Gtk.Image()
image.set_from_stock(Gtk.STOCK_DIALOG_ERROR, Gtk.IconSize.BUTTON)
image.show()
self.button_waiting.remove(image)
self.button_waiting.add(image)
我收到此错误:
Gtk-CRITICAL **: gtk_container_remove: assertion `gtk_widget_get_parent (widget)
== GTK_WIDGET (container) || GTK_IS_ASSISTANT (container)' failed
(fresh_install:16299): Gtk-WARNING **: Attempting to add a widget with type
GtkImage to a GtkButton, but as a GtkBin subclass a GtkButton can only contain
one widget at a time; it already contains a widget of type GtkLabel
这似乎是我复制的答案的错误,但做他所做的并不适合我。
我读到可以将图像放在标签上,如何获得在林间空地制作的按钮的标签名称?
以下答案: replace image using gtk.image.set_from_file
___________________ 原始问题 _________________________________ 我试过这个:
self.button_waiting=self.builder.get_object('button_waiting')
self.button_waiting.set_label("Cancel")
image=Gtk.Image.set_from_stock(Gtk.STOCK_DIALOG_ERROR, Gtk.ICON_SIZE_BUTTON)
image.show()
self.button_waiting.image.clear()
self.button_waiting.add(image)
我收到以下错误:
AttributeError: 'gi.repository.Gtk' object has no attribute 'ICON_SIZE_BUTTON'
但我在参考手册上发现了GTK_ICON_SIZE_BUTTON>。<
答案 0 :(得分:3)
我将假设您使用的是PyGObject(GTK + 3.x),这取决于您Gtk
而不是gtk
。如果是这种情况,那么您应该使用Gtk.IconSize.BUTTON
而不是Gtk.ICON_SIZE_BUTTON
。
这是因为GObject Introspection将常量放入命名空间而不是我们在C源代码中看到的长常量。根据具体情况,通常很容易弄明白。