PyGObject GTK+3-文档?

2024-03-29 15:01:00 发布

您现在位置:Python中文网/ 问答频道 /正文

PyGObject似乎没有真正的文档。This tutorial离得越近越好。我整个上午都在努力寻找一个Gtk.Window构造函数接受的参数的描述。似乎我不能在Python中做很多反射,因为PyGObject中的所有内容都是动态生成的。

我只想知道我能传递给这个构造函数的参数是什么!在GTK+3文档中似乎没有与此对象等效的对象,阅读源代码以确定绑定已被证明是一项极其艰巨的任务。有什么想法吗??


Tags: 对象文档证明内容gtk参数源代码动态
3条回答

文档位于此处: https://lazka.github.io/pgi-docs/Gtk-3.0/index.html

Gtk.Window参数(正是您所要求的)如下: https://lazka.github.io/pgi-docs/Gtk-3.0/classes/Window.html

上面有一些交互式控制台解决方案,但我更喜欢自动完成的解决方案: How do I add tab completion to the Python shell?

我同意这是PyGObject在当前状态下的一个巨大缺点。对于我们这些已经使用GTK+一段时间的人来说,这是没有问题的,但是对于新用户来说,这可能会令人困惑。

人们正在开发一个系统来自动生成C语言以外的文档,这种语言称为GObject Introspection Doctools。因为还没有完全准备好,所以最好使用C API documentation并学习如何将其转换为Python。并不像听起来那么难。

记住,Python调用是动态包装到底层C库的。您需要做的就是了解一些东西是如何翻译成Python的,并理解GTK+“properties”是如何工作的。这基本上是C语言中的命名约定,而且模式很容易学习。PyGObject/Introspection Porting页面是一个良好的开始。

Python中的构造函数通常被包装到C中的*_new()函数中。PyGObject还允许您将属于该小部件的任何GTK+属性作为关键字参数传入构造函数中。因此,在Python中构造小部件时有很多选项。

你提到了GtkWindow。如果您查看GtkWindow Documentationgtk_window_new()函数在C中将窗口类型作为参数。这将是Python中构造函数的位置参数。PyGObject“重写”构造函数,以便type是可选的,并且默认为顶级窗口。有一堆GtkWindow properties也可以作为关键字参数传递给构造函数。

下面是在Python中构造Gtk.Window的三个示例,它们在功能上是等价的:

# 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交互控制台是一个很好的小部件和属性实验方法。

要稍微扩展到可接受的答案,GObject Introspection Doctools页面有一个关于如何创建自己的文档的部分。

在Ubuntu 12.04.2 LTS上,您可以发出以下命令:

$> g-ir-doc-tool --language Python -o ./output_dir /usr/share/gir-1.0/Gtk-3.0.gir
$> yelp ./output_dir/index.page

相关问题 更多 >