我需要绘制图表。我使用gtk.Curve小部件。当我给他添加一个长矢量时,它给了我这个错误:
GLib-ERROR **:/build/buildd/glib2.0-2.26.1/glib/gmem.c:170:无法分配4294967276字节 中止...
代码很简单:
w = gtk.Window()
c = gtk.Curve()
c.set_vector(v)
c.set_curve_type(gtk.CURVE_TYPE_SPLINE)
w.add(c)
w.show_all()
gtk.main()
向量是一个很长的列表:
[0.80000000000000004,0.29999999999999999,0.29999999999999999,0.80000000000000004,0.90000000000000002,0.20000000000000001,...]
此列表中约有800个元素。任何人都知道这个问题是什么? THX
答案 0 :(得分:1)
我不知道为什么但是gtk.Curve似乎无法操纵主循环之外的数据。尝试使用类似的东西在主要调用之后添加数据。
import random, gtk, gobject
def createCurve(c):
v = [random.random() for i in range(800)]
c.set_vector(v)
c.set_curve_type(gtk.CURVE_TYPE_SPLINE)
return True
c = gtk.Curve()
vb = gtk.VBox()
vb.pack_start(c, True, True)
w = gtk.Window()
w.add(vb)
w.show_all()
gobject.timeout_add(2000, createCurve, c)
gtk.main()