我同意这是 PyGObject 在当前状态下的一个巨大缺点。对于我们这些已经使用 GTK+ 一段时间的人来说,这没有问题,但是,对于新用户来说,这可能会令人困惑。
人们正在开发一个系统来自动生成 C 以外的语言的文档,该系统被称为GObject 自省文档工具 https://live.gnome.org/GObjectIntrospection/Doctools。由于还没有准备好,您最好使用C API 文档 http://developer.gnome.org/gtk3/stable/并了解它如何转换为 Python。这并不像听起来那么难。
请记住,Python 调用动态包装到底层 C 库。您需要做的就是了解一些事情是如何的通常翻译为 Python 并了解 GTK+“属性”如何工作。它基本上是 C 语言的命名约定,并且模式很容易学习。这PyGObject/内省移植 https://live.gnome.org/PyGObject/IntrospectionPorting页面是一个好的开始。
Python 中的构造函数通常被包装到*_new()
C 中的函数。PyGObject 还允许您传入any属于该小部件的 GTK+ 属性作为构造函数中的关键字参数。因此,在 Python 中构建小部件时您有很多选择。
你曾提到过GtkWindow
。如果你看一下GtkWindow 文档 http://developer.gnome.org/gtk3/stable/GtkWindow.html, the gtk_window_new()
在 C 中,函数将窗口类型作为参数。在 Python 中,这将是构造函数的位置参数。 PyGObject“覆盖”构造函数,以便type
是可选的,默认为顶级窗口。有一堆Gtk 窗口属性 http://developer.gnome.org/gtk3/stable/GtkWindow.html#GtkWindow.properties也可以作为关键字参数传递给构造函数。
以下是构建的 3 个示例Gtk.Window
在 Python 中,它们在功能上是等效的:
# 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")
Python 交互式控制台是试验小部件和属性的好方法。