首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解gi.repository

了解gi.repository
EN

Stack Overflow用户
提问于 2011-11-13 13:27:39
回答 2查看 10.1K关注 0票数 12

我很难理解gi.repository

我在代码中使用了这个结构

代码语言:javascript
复制
from gi.repository import Gtk

但是如果我想使用某个组件,我会得到导入错误

我搜索了一些组件,比如GtkSource,Vte,GLib,...

所以我的代码是这样的

代码语言:javascript
复制
from gi.repository import Gtk, GtkSource, Vte, GLib

一切正常,但是如果我想添加matplotlib来在我的画布上绘制,我会得到错误

代码语言:javascript
复制
    enter code/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py:40: Warning: specified class size for type `PyGtkGenericCellRenderer' is smaller than the parent type's `GtkCellRenderer' class size
  from gtk import _gtk
/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_type_get_qdata: assertion `node != NULL' failed
  from gtk import _gtk
/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_ascii_strncasecmp: assertion `s2 != NULL' failed
  from gtk import _gtk
Segmentation fault (core dumped) here

如何让matplotlib与gi.repository一起工作?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-13 22:13:50

这是一个非常好的问题。我担心答案可能是“你不能”。Matplotlib的GTK后端是为PyGTK编写的,GTK的旧式Python绑定。Python包是一种新型的gi.repository绑定。我不知道他们是否可以混合在一起,但你的结果似乎表明他们不能。

票数 6
EN

Stack Overflow用户

发布于 2012-01-14 04:37:15

似乎对Gtk3的支持已经是added recently了。我猜它在主要发行版中可用还需要一段时间。

最好的解决方案是下载并安装最新版本。

为了避免在我的Ubuntu11.10中安装东西,我使用了dowloaded backend_gtk3.py and backend_gtk3agg.py files并直接导入,如下所示:

代码语言:javascript
复制
from gi.repository import Gtk

from matplotlib.figure import Figure
from backend_gtk3agg import FigureCanvasGTK3Agg as FigCanvas

我不得不更改backend_gtk3agg.py第6行,其中显示:

代码语言:javascript
复制
import backend_agg

使用

代码语言:javascript
复制
from matplotlib.backends import backend_agg

,这样它就可以从我的安装中导入模块。到目前为止,它对我是有效的,但我知道这个解决方案不能与matplotlib的不同版本一起工作。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8109805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档