Можно ли развернуть объект PyGTK?

У меня есть Gtk.Window объект в Python. Этот объект по сути немного больше, чем обертка вокруг GtkWindow *, Возможно ли это из C (с PyObject *) или Python, чтобы добраться до этого GtkWindow *?

У меня есть приложение, написанное на Python, но часть кода рендеринга для определенного виджета слишком медленная. Я пытался изолировать его в альтернативном потоке, но мне кажется, что GIL меня немного раздражает, потому что я пытаюсь, чтобы два потока выполняли работу процессора. (Фоновый поток, имеющий почти 100% ЦП, слишком долго борется с потоком пользовательского интерфейса, когда он ему нужен, из-за чего он не отвечает.) Было бы достаточно просто написать фонового работника на C, если бы я был указатель.

1 ответ

Если у вас есть PyGObject, он должен выглядеть так:

PyGObject *py_widget;
GtkWidget *widget;

if (!PyArg_ParseTuple(args, "O!", PyGObject_Type, &py_widget))
    return NULL;
widget = GTK_WIDGET(py_widget->obj);

(Взято с http://www.daa.com.au/pipermail/pygtk/2003-November/006292.html) Только я не знаю, как преобразовать PyObject в PyGObject.

Другие вопросы по тегам