15

我安装了 Fedora 15 以使用 Python3 和 GObject 来开发桌面应用程序,因为 PyGTK 看起来已经过时了:

PyGTK 2.24.0 由 Rafael Villar Burke 于 2011 年 4 月 1 日星期五发布 PyGTK 2.24.0 已经发布。这是一个支持 GTK+ 2.24 API 的稳定版本。 建议希望使用 GTK+ 开发 Python 应用程序的新用户使用 PyGObject 中提供的 GObject-Introspection 功能。[...]

PyGobject 2.26.0已经发布。这是 2.26.x 系列中的第一个稳定版本,并引入了对自省和 Python 3 的初始支持。[...]

来源: http: //www.pygtk.org/

我以为罢工!使用 Python 3 和 PyGObject 开发新的 Gnome3 应用程序!我访问了PyGObject 页面,看到最新的稳定版本是 2.28(自 2.26 起支持 Python3),它安装在 Fedora 上,但仅与 python2绑定。

有没有搞错?

我访问了网站上的 PyGobject演示示例,并查看了源代码和其中使用 pygtk + pygtk.require('2.0') 而不是 pygobject 的每个代码。

我错过了什么吗?如何使用 Python3 和 PyGObject 开发 Gnome 3 应用程序?

4

4 回答 4

8

更新:这里有一些文档:The Python GTK+ 3 Tutorial。它仍然缺少与 GIO 等有关的任何内容。

这不是……呃,不可能……但是因为你在谈论最新一代的 GTK (&co) 绑定,所以事情肯定会有点落后。开发人员的工作主要针对实际开发,而文档、示例等往往会晚得多。这就是自由软件的现实:/ 请记住,PyGI 也是最近才被合并到 PyGObject 中的,因此历史上还有另一个不连续性需要编辑。

所以我给你的答案是:

  1. 订阅 PyGTK/PyGObject 邮件列表,请求一些指针或参考资料或手把手,然后从那里开始。与开发人员保持一致的渠道确实是保持领先地位的唯一途径。
  2. 把这一刻(和那个人的面部表情)藏在你大脑的一个角落里,这样当你加快速度时,你——是,先生,——可以写下这些东西并将其作为文件提交对于处于这种情况的下一个不幸的灵魂。

(就个人而言,我迫不及待地想抽出一些时间来尝试将一些东西与新的 API 组合在一起,但我正试图推迟到 Gnome 3 在 Debian 中。我急切地等待在我的脸上戴上这样的表情。)

于 2011-06-20T08:25:39.427 回答
4

developer.gnome.org 上的平台演示完全用 GTK 3 和 GNOME 3 编写。目前只有两个可用于 Python,其他尚未翻译,但这应该可以帮助您入门。

不幸的是,即使在 GTK 3 普及多年后,您仍然会在网上遇到 PyGTK 2 教程,因为人们一时兴致勃勃地编写它们,并且再也不会更新它们。也没有人会删除它们,因为其中可能还有有价值的材料,您只需更改 X、Y 和 Z 即可使其与 GTK 3 一起使用...这就是为什么您仍然可以找到 C 教程的原因GTK 1.2 在线。

因此,如果您找到 PyGTK 2 的教程,最好给托管它的人写一封电子邮件,告诉他们它已经过时了。更好的是,更新GTK 3 的教程并向他们发送新版本!毕竟,它是开源的。

于 2011-06-20T11:59:55.633 回答
2

尽管 import pygtk pygtk.require('2.0') 它们是自省编写的,如果你注释掉它们仍然运行的 pygtk 导入,我怀疑这只是一个疏忽,我花了相当多的时间尝试移植一些东西最近

判断的方法是代码如何导入 gtk 本身

#import pygtk
#pygtk.require('2.0')
from gi.repository import Gtk, GLib, GObject, GdkPixbuf, Gio, Pango

意味着它使用自省,如果代码用大写 G 做 gtk 事情,那么它肯定也是自省:) 例如

#a pygtk window
awindow = gtk.Window()
#an introspection window
awindow = Gtk.Window()
于 2011-06-26T16:57:08.933 回答
1

我现在开发应用程序所做的是从这里GTK+下载并安装,然后使用以下命令创建一个新的虚拟环境:Anaconda3

conda create --name xld-attribute-value-adder python=3.4 pip setuptools pygobject

(我添加了pipandsetuptools因为virtualenv用于在创建虚拟环境时添加它们。我知道我可以pip用于安装包,但setuptools' 的名称暗示它可以用于或用于类似的东西。)

然后Anaconda告诉我,它找不到PyGObject,我可以使用binstar(很棒,另一个要记住的工具!)搜索它,如下所示:

binstar search -t conda pygobject

但是,这会导致多个搜索结果:

Name                      |  Version | Package Types   | Platforms      
 ------------------------- |   ------ | --------------- | ---------------
 ???/pygobject3            |   3.12.0 | conda           | linux-64       
                                      : None
 KristanArmstrong/pygobject |   3.14.0 | conda           | win-64         
                                      : PyGObject is a Python extension module that gives clean and consistent access to the entire GNOME software platform through the use of GObject Introspection.
 fallen/pygobject          |   3.14.0 | conda           | linux-64, linux-32
                                      : PyGObject is a Python extension module that gives clean and consistent access to the entire GNOME software platform through the use of GObject Introspection.
 jeanconn/pygobject        |          | conda           | linux-64       
                                      : None
 pkgw/pygobject3           |   3.12.0 | conda           | linux-64       
                                      : None
 ska/pygobject             |   2.20.0 | conda           | linux-64       
                                      : Pipeline running tools
 vgauthier/pygobject       |   3.10.0 | conda           | osx-64         
                                      : Python Bindings for GLib/GObject/GIO/GTK+

那么如何知道我需要安装哪一个呢?我当然想要最新和最稳定的...其中一些不符合条件,因为它们不适合我的linux-64系统。我想做一个搜索,它只显示我的系统可用的那些,所以我发现一些帖子告诉我,这种搜索可以在Anaconda 网站本身上进行,在搜索输入字段中输入以下内容:

access:public platform:linux-64 pygobject

现在我只看到 4 个结果,但仍然不知道哪一个是最新的,或者我应该使用哪一个。Anaconda 网站也没有告诉我这些存储库何时更新。所以我认为版本号最高的应该是它。事实上,我找到了一个网站,上面写着那个版本PyGObject 3.14是那个版本的,22 Sep 2014或者至少那个网站上的帖子是从那个日期开始的。

我创建了没有 pygobject 参数的虚拟环境:

conda create --name xld-attribute-value-adder python=3.4 pip setuptools

然后激活它:

source activate xld-attribute-value-adder

然后安装PyGObject使用:

conda install -c https://conda.anaconda.org/fallen pygobject

之后,我Project Interpreter在我的 IDE PyCharm 中将这个项目的(是的,我目前正在为这个项目使用 PyCharm)更改Python 3.4为我新创建的虚拟环境的二进制文件:

(Project Directory)/bin/python3.4

然后我打开一个 python 文件,其中包含以下行:

from gi.repository import Gtk

PyCharm 还没有找到 Gtk 或者有其他问题,所以我需要点击红色下划线的GtkAlt+Enter选择为它创建二进制存根。

毕竟它终于奏效了:)

于 2015-08-03T20:09:05.167 回答