Экспорт графика в pyqtgraph без графического интерфейса

Я использую сказочный pyqtgraph в скрипте, который создает сюжет и экспортирует его в файл (интерактивные функции не используются). Это прекрасно работает.

Однако при запуске на удаленной машине без X-сервера в mkQApp() возникает ошибка:

cannot connect to X server

Есть ли способ запустить pyqtgraph без графического интерфейса, удалив зависимость от X?

Я обнаружил, что есть класс QtCore.QCoreApplication, который, насколько я понимаю, не имеет графического интерфейса. Однако я недостаточно знаком с Qt, чтобы сказать, может ли он (или работает) работать с pyqtgraph.


person shx2    schedule 19.05.2014    source источник
comment
Я думаю, что ответ отрицательный - нет способа заставить QGraphicsView отображать изображение без создания QApplication. Однако я не ввожу ответ, потому что надеюсь, что кто-то еще скажет нам иначе :)   -  person Luke    schedule 19.05.2014


Ответы (1)


Невозможно использовать QGraphicsScene без QApplication:

>>> from PyQt4 import QtGui, QtCore
>>> app = QtCore.QCoreApplication([])
>>> scene = QtGui.QGraphicsScene()
Segmentation fault

Однако вы должны иметь возможность использовать xvfb при отсутствии какого-либо графического оборудования и, таким образом, используйте ваш обычный скрипт pyqtgraph без изменений.

person Luke    schedule 19.05.2014
comment
Спасибо, использование xvfb прекрасно работает. Я понимаю, что ограничение возникает на уровне Qt, но возможно ли поддерживать некоторый режим без графического интерфейса в pyqtgraph, который позволяет избежать использования классов Qt, которые не работают без графического интерфейса? Или pyqtgraph уже сильно зависит от них в своей основной функциональности? - person shx2; 20.05.2014
comment
На данный момент pyqtgraph очень сильно зависит от Qt GraphicsView для генерации всей графики. Однако долгосрочной целью является переход на использование OpenGL (через проект VisPy). Это обеспечит множество новых функций, включая безголовый рендеринг. - person Luke; 20.05.2014