0

我正在将代码从 PyGtk 移植到 PyGI(PyGObject)。有我的代码:

import gi
gi.require_version('Gtk','2.0')
from gi.repository import Gtk, Gdk, GObject
w, h = 100,100
# pixmap = gtk.gdk.Pixmap(None, w, h, 1)
pixmap = Gdk.Pixmap(None, w, h, 1) # I Change to it and get error
ctx = pixmap.cairo_create()

我的错误是:

对象。init () 正好接受 0 个参数(给定 4 个)

...然后我将“Gdk.Pixmap(None,w,h,1)”更改为“Gdk.Pixmap.new(None,w,h,1)”我收到此错误:

TypeError:参数 0 不允许 None 作为值

谢谢你 :)

4

1 回答 1

0

gi代表 GObject-introspection。此功能仅出现在 GTK+ 3 中,并且允许动态绑定,而不是像 pyGTK 这样的静态绑定。然而,似乎有一个与 GTK+ 2 ( pygtkcompat) 兼容的层,但我知道没有项目使用它。

请阅读这篇文章,其中提供了有关如何从 pyGTK 移植到 pyGObject 的提示: https ://wiki.gnome.org/Projects/PyGObject/IntrospectionPorting

迁移步骤之一是使用pygi-convert.sh脚本来更新您的代码并为您执行部分迁移。

于 2018-02-09T10:11:32.053 回答