2012-01-12 3 views
3

Я пишу приложение GUI в Python 3 с помощью PyQt4 и matplotlib. Пользователь должен будет выбрать определенные имена полей, затем программа будет считывать соответствующие значения из базы данных, обрабатывать их и рисовать сюжет с некоторыми статистическими данными. Пользователь может изменить имена полей или определенные параметры представления статистики и (автоматически) перерисовать график.matplotlib виджет для Qt 4, Python 3

Я нашел виджет Qt в этой главе: Matplotlib for Python Developers, Embedding Matplotlib in Qt 4. Но здесь также есть пример виджета: mpl widget.

У меня нет большого опыта работы с дизайном Qt и интересно, какая может быть разница между этими двумя? До сих пор я пробовал первый, и он позволяет мне отображать график matplotlib (гистограмма) в Qt GUI, но я не могу проверить все функции, такие как обновление графика после изменения каких-либо параметров, поскольку он еще не реализован ,

Любые советы, полезные ссылки или доступные виджеты приветствуются.

+5

Когда мне нужно было строить данные по моему проекту Qt, я использовал это [demo] (http://eli.thegreenplace.net/2009/01/20/matplotlib-with-pyqt-guis/). Это было довольно легко – JBernardo

+0

Хороший пример, спасибо! – Katya

ответ

0

Преимущество виджета mpl заключается в том, что вы можете его увидеть при разработке интерфейса в QtDesigner, а некоторые из них автоматически настроены для вас. Если вы посмотрите на код, вы увидите, что он также основан на примере «внедрения», который вы даете. С другой стороны, у вас всегда может быть qwidget-заполнитель (или что-то еще) в интерфейсе для размещения виджета вашего сюжета, а затем вам не нужно переносить файл mpl_widget в качестве зависимости.

Даже самым простым решением может быть использование интерфейса pylab от matplotlib, который будет создавать фигурные окна независимо от вашего основного приложения. Вам нужно убедиться, что интерактивный режим включен, а бэкэнд установлен на qt4, прежде чем пытаться нарисовать что-либо. Цифры просты в управлении (например, plt.close («все»)).

Смежные вопросы