PyGObject GTK + 3 - 文档?

HOL*_*zza 20 python gtk gobject pygobject gtk3

PyGObject似乎没有真正的文档.本教程尽可能接近.我整个上午一直在努力寻找Gtk.Window构造函数接受的参数的描述.我似乎无法在Python中做太多反思,因为PyGObject中的所有内容都是动态生成的.

我想要的只是知道我可以传递给这个构造函数的参数!在GTK + 3文档中似乎没有相应的此对象,并且阅读源代码以确定绑定已被证明是一项非常艰巨的任务.有任何想法吗??

Mic*_*ick 20

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

人们正在研究一个系统来自动生成C语言以外的语言文档,这些文档被称为GObject Introspection Doctools.由于尚未准备好,您最好使用C API文档并了解它如何转换为Python.它并不像听起来那么难.

请记住,Python调用是动态包装到底层C库的.您需要做的就是学习如何将一些东西通常翻译成Python并理解GTK +"属性"的工作原理.它基本上是C中的命名约定,并且模式易于学习.该PyGObject /反省移植页面是一个良好的开端.

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

你曾经提到了GtkWindow.如果查看GtkWindow文档,该gtk_window_new()函数将窗口类型作为C中的参数.这将是Python中构造函数的位置参数.PyGObject"覆盖"构造函数,使其type是可选的,默认为顶级窗口.有一堆GtkWindow属性也可以作为关键字参数传递给构造函数.

以下是Gtk.Window在Python 中构建功能等同的3个示例:

# 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")
Run Code Online (Sandbox Code Playgroud)

Python交互式控制台是试验小部件和属性的好方法.


小智 14

文档位于: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

上面有一些交互式控制台解决方案,但我更喜欢自动完成的解决方案: 如何向Python shell添加选项卡完成?


小智 6

稍微扩展到接受的答案; 在GObject的自省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
Run Code Online (Sandbox Code Playgroud)