2013-04-24 10 views
7

Я создал простой скрипт python, который при запуске должен отображать встроенный график matplotlib внутри окна PyQT. Я использовал this учебник для встраивания и запуска графика. Помимо некоторых различий в соглашениях об именах и в общем пользовательском интерфейсе мой график генерируется точно так же, как в упомянутом руководстве.Интерактивный график Matplotlib, встроенный в PyQt

Моя проблема заключается в том, что я хотел бы сделать это интерактивным графиком, который позволяет масштабировать и перетаскивать, но я хотел бы сделать это только с помощью мыши (щелчка и перетаскивание, колесо прокрутки и т. Д.) И без панели инструментов (как я считаю это уродливым).

Widget Класс:

class MplCanvas(FigureCanvas): 
    """ 
    Creates a canvas on which to draw our widgets 
    """ 
    def __init__(self): 
     self.fig = Figure() 
     self.ax = self.fig.add_subplot(111) 

     FigureCanvas.__init__(self, self.fig) 
     FigureCanvas.setSizePolicy(self, QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding) 
     FigureCanvas.updateGeometry(self) 

class marketdephWidget(QtGui.QWidget): 
    """ 
    The market deph graph 
    """ 
    def __init__(self, parent = None): 
     QtGui.QWidget.__init__(self, parent) 
     self.canvas = MplCanvas() 
     self.vbl = QtGui.QVBoxLayout() 
     self.vbl.addWidget(self.canvas) 
     self.setLayout(self.vbl) 

Plotting функция (работает на нажатие кнопки):

# initialize the mplwidgets 
def PlotFunc(self): 
    randomNumbers = random.sample(range(0, 10), 10) 
    self.ui.widget.canvas.ax.clear() 
    self.ui.widget.canvas.ax.plot(randomNumbers) 
    self.ui.widget.canvas.draw() 

ответ

2

Это было время, но я работал над подобной проблемой. У меня есть example here. Может быть, это поможет.

Программа использует PySide, но не должна быть проблемой.

Чтобы запустить программу

python pyStocker.py 

вы увидите виджет всплывающее окно и в верхнем левом углу вы увидите TextEdit окно. Просто введите GOOG или какой-либо другой действительный символ акции и нажмите enter. График будет заполнен данными запаса. Полоса слайдера внизу меняет график в реальном времени.

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