我是 GPSD 的维护者。得知 pygtk 的 gobject 绑定已被弃用,我正在尝试将我们的 Python 测试客户端转发到 python-gi。我使用 pygi-convert.sh脚本轻松移植了 xgps ,但现在在使用 xgpsspeed 时遇到了困难。
在 xgpsspeed 上运行 pygi-convert.sh 后,我首先必须手动修复“expose_event”信号,将其更改为“draw”。我预料到了这一点,因为我必须在成功的 xgps 端口中做同样的事情。
运行修补版本会引发此错误:
Traceback (most recent call last):
File "./xgpsspeed", line 72, in draw
event.area.x,
AttributeError: 'cairo.Context' object has no attribute 'area'
这显然与方法处理程序中的这部分代码有关:
def draw(self, _unused, event, _empty=None):
self.cr = self.get_window().cairo_create()
self.cr.rectangle(
event.area.x,
event.area.y,
event.area.width,
event.area.height
)
我的 search-fu 没有找到任何明显的理由来让 event 参数在 3.x 下被传递给 Cairo 上下文,而不是它所期望的并在 2.x 下传递的事件。我只能猜测处理程序签名已更改,但我找不到任何解决该问题的文档。