3
我一直在快速瀏覽GtkStack的GTK 3.10文檔。如何更改GTK窗口小部件(如堆棧)的屬性?
它提到孩子添加到GtkStack被賦予的屬性「圖標名稱」。
我的問題是 - 我怎樣才能改變這個屬性的值。原因 - 我想將GtkStackSwitcher按鈕更改爲圖標而不是文本,但我想編碼 - 不使用GktBuilder用戶界面。
如果你看看gtk3-demo
-Stack演示和UI文件,你可以看到GtkSwitcher有一個圖標。
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.6 -->
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<property name="title" translatable="yes">GtkStack</property>
<child>
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkStackSwitcher" id="switcher">
<property name="visible">True</property>
<property name="stack">stack</property>
<property name="halign">center</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkStack" id="stack">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="transition-type">crossfade</property>
<child>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin-top">20</property>
<property name="margin-bottom">20</property>
<property name="resource">/application/gtk-logo-48.png</property>
</object>
<packing>
<property name="name">page1</property>
<property name="title" translatable="yes">Page 1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="checkbutton1">
<property name="label" translatable="yes">Page 2</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
</object>
<packing>
<property name="name">page2</property>
<property name="title" translatable="yes">Page 2</property>
</packing>
</child>
<child>
<object class="GtkSpinner" id="spinner1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="active">True</property>
</object>
<packing>
<property name="name">page3</property>
<property name="icon-name">face-laugh-symbolic</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
使用python3解釋的Ubuntu 14.04(GTK 3.10)
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from gi.repository import Gtk
>>> stack = Gtk.Stack()
>>> spin = Gtk.Spinner()
>>> stack.add_named(spin, "spin")
>>> stack.show_all()
>>> child = stack.get_visible_child()
>>> child.props.icon_name = "go-previous"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'gi._gobject.GProps' object has no attribute 'icon_name'
>>> stack.props.icon_name = "go-previous"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'gi._gobject.GProps' object has no attribute 'icon_name'
>>>
下你可以看到 - 我添加了一個GtkSpinner到堆棧對象 - 我已經試圖訪問已添加的孩子,然後更改「icon-name」屬性。
沒有快樂。那麼我在做什麼是明顯的錯誤?