GUI wxPython: перенос gnuplot в matplotlib - PullRequest
0 голосов
/ 02 февраля 2010

В настоящее время у меня есть встроенный графический интерфейс wxPython с несколькими разделами, один из которых отображает изображение графика в формате .png:

self.plot = wx.BitmapButton(self.pane_system, -1, wx.Bitmap("/home/myname/projects/newton/plot/src/graph.png", wx.BITMAP_TYPE_ANY))

В другой части графического интерфейса есть место, где я могу редактировать параметры. Текущая настройка заключается в том, что когда я изменяю параметры и нажимаю клавишу ввода, код говорит Gnuplot заново построить и сохранить новый график в файле graph.png, а затем обновить графический интерфейс, чтобы отобразить обновленное изображение.

У меня есть несколько общих вопросов:

  • Я хочу перенести gnuplot в matplotlib по следующей причине: если я использую gnuplot, на компьютере, на котором выполняется исполняемый файл, должен быть установлен gnuplot. С другой стороны, matplotlib является модулем Python, поэтому мне не нужно беспокоиться об установке графических пакетов на других машинах. Это предположение верно?

  • Как я могу изменить свое окно графического интерфейса wxPython для отображения графика matplotlib? Я нашел несколько уроков, рассказывающих мне, как создать новую панель с графиком matplotlib, но я бы хотел, чтобы она появилась там, где был старый график. Я думаю, что смогу заставить matplotlib сохранить график в файл изображения, как я это делал в gnuplot. Является ли вообще хорошей идеей сохранить график в виде изображения и обновить графический интерфейс, или есть другие (более быстрые) рекомендации по обновлению графиков? Один из недостатков использования файлов изображений (как в приведенном выше коде) заключается в том, что они не меняются при изменении размера окна графического интерфейса.

  • Если я упакую это как исполняемый файл, придется ли мне устанавливать wxPython / Python на компьютере Windows, чтобы запустить исполняемый файл?

1 Ответ

2 голосов
/ 02 февраля 2010

Принимайте ваши вопросы по порядку:

1.) Да, matplotlib - это отдельный модуль python.Он имеет внешние зависимости, но в Windows эти зависимости упаковываются вместе с установкой matplotlib.Вам нужно беспокоиться об этом при установке на другие машины?Это зависит от того, как вы собираетесь установить.Вы упаковываетесь в exe?Предложить конечным пользователям установить Python и matplotlib?Например, вы можете упаковать matplotlib в ваш exe-файл с помощью py2exe, см. здесь .Конечно, вам придется настроить эти сценарии для своего бэкэнда, wx.

2.) Вы видите панели с графиками, потому что matplotlib предоставляет FigureCanvasWxAgg , который является wxWidget, полученным изwxPanel, которая хорошо играет с matplotlib.Преимущества его использования в том, что вы можете устанавливать обработчики для таких вещей, как изменение размера и рисование.

Ваш wxBitMapButton, хотя ищет wxBitmap для изображения.Вы могли бы дать ему дескриптор файла (cStringIO.StringIO) для сюжета matplotlib и избавить от необходимости записывать файл на диск.Вы также можете перехватить событие resize и получить matplotlib, чтобы перерисовать фигуру до нужного размера.У вас не будет такой гибкости, как при использовании FigureCanvasWxAgg.Однако я не могу исследовать все это, поскольку веб-сайт wxPython не работает.

3.) Вы можете упаковать wxPython в исполняемый файл.Как зависит от того, какой упаковщик вы используете.Я делал это с py2exe много раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...