<p>我同意这是PyGObject在当前状态下的一个巨大缺点。对于我们这些已经使用GTK+一段时间的人来说,这是没有问题的,但是对于新用户来说,这可能会令人困惑。</p>
<p>人们正在开发一个系统来自动生成C语言以外的文档,这种语言称为<a href="https://live.gnome.org/GObjectIntrospection/Doctools">GObject Introspection Doctools</a>。因为还没有完全准备好,所以最好使用<a href="http://developer.gnome.org/gtk3/stable/">C API documentation</a>并学习如何将其转换为Python。并不像听起来那么难。</p>
<p>记住,Python调用是动态包装到底层C库的。您需要做的就是了解一些东西是如何翻译成Python的,并理解GTK+“properties”是如何工作的。这基本上是C语言中的命名约定,而且模式很容易学习。<a href="https://live.gnome.org/PyGObject/IntrospectionPorting">PyGObject/Introspection Porting</a>页面是一个良好的开始。</p>
<p>Python中的构造函数通常被包装到C中的<code>*_new()</code>函数中。PyGObject还允许您将属于该小部件的任何</em>GTK+属性作为关键字参数传入构造函数中。因此,在Python中构造小部件时有很多选项。</p>
<p>你提到了<code>GtkWindow</code>。如果您查看<a href="http://developer.gnome.org/gtk3/stable/GtkWindow.html">GtkWindow Documentation</a>,<code>gtk_window_new()</code>函数在C中将窗口类型作为参数。这将是Python中构造函数的位置参数。PyGObject“重写”构造函数,以便<code>type</code>是可选的,并且默认为顶级窗口。有一堆<a href="http://developer.gnome.org/gtk3/stable/GtkWindow.html#GtkWindow.properties">GtkWindow properties</a>也可以作为关键字参数传递给构造函数。</p>
<p>下面是在Python中构造<code>Gtk.Window</code>的三个示例,它们在功能上是等价的:</p>
<pre><code># this is very close to how it's done in C using get_*/set_* accessors.
window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
window.set_title("Hello")
# setting properties as keyword arguments to the constructor
window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL, title="Hello")
# set_properties() can be used to set properties after construction
window = Gtk.Window()
window.set_properties(title="Hello")
</code></pre>
<p>Python交互控制台是一个很好的小部件和属性实验方法。</p>