Ошибка памяти кривой PyGTK - PullRequest
1 голос
/ 18 апреля 2011

Мне нужно нарисовать график. и я использую 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 элементов в этом списке. кто-нибудь может знать в чем проблема? ТНХ

1 Ответ

1 голос
/ 18 апреля 2011

Я не знаю почему, но 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()
...