繁体   English   中英

如何将python程序从gtk2移植到gtk3?

[英]How to port Python program from gtk2 to gtk3?

我们正在尝试将该程序从gtk2移植到gtk3。 当我尝试pygi-convert.sh ,出现以下错误:

Traceback (most recent call last):
  File "scripts/amir", line 53, in <module>
    from gi.repository import GObject
  File "/usr/lib/python2.7/dist-packages/gi/__init__.py", line 39, in <module>
    raise ImportError(_static_binding_error)
ImportError: When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject". See: https://bugzilla.gnome.org/show_bug.cgi?id=709183

有什么建议或其他方式可以进行此移植吗?

首先,尝试了解您在做什么。 阅读GTK + 3官方Python的基础教程 您会看到执行导入的正确顺序是:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

pygi-convert.sh不是灵丹妙药,您必须了解更改并进行检查。 例如, 本节中的进口肯定是错误的。 顺序不正确,并且import gtk,Gtk.glade行上还剩下一个import gtk git grep -w gtk应该可以帮助您找到代码中所有小写的gtk出现,应将其删除或替换。

我还看到您在同一文件中有一些代码可以更改窗口主题。 在GTK + 2和GTK + 3之间完全改变了主题。GTK + 3使用CSS引擎。

查看Python GTK + 3 API以了解可用的内容,并检查C迁移指南(对此尚不了解python资源,对不起) ,GTK + 2和GTK + 3之间发生了什么变化 大多数事情不适用于python,但是有些事情会适用。 例如,在进行自定义绘制或检查哪些小部件已被杀死和替换时,从旧的expose-event迁移到draw信号。

然后尝试运行,修复错误,冲洗,然后重复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM