2013-04-24 7 views
7

Ich habe ein einfaches Python-Skript erstellt, das bei der Ausführung ein eingebettetes Matplotlib-Diagramm in einem PyQT-Fenster anzeigen sollte. Ich habe this Tutorial zum Einbetten und Ausführen des Diagramms verwendet. Abgesehen von einigen Unterschieden in den Benennungskonventionen und in der gesamten Benutzeroberfläche wird mein Diagramm genau so erzeugt wie in dem erwähnten Tutorial.Matplotlib interaktiver Graph eingebettet in PyQt

Mein Problem ist, dass ich möchte dies ein interaktives Diagramm, das Zoomen und Ziehen ermöglicht, aber ich würde dies nur mit der Maus (klicken und ziehen, Scrollrad, etc.) und ohne die Symbolleiste (wie ich es hässlich finde).

Widget-Klasse:

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) 

Plotten Funktion (auf Tastendruck ausgeführt werden):

# 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() 

Antwort

2

Es ist eine Weile her, aber ich arbeite an einem ähnlichen Problem. Ich habe eine example here. Vielleicht wird das helfen.

Das Programm verwendet PySide, sollte aber kein Problem sein.

Um das Programm

python pyStocker.py 

Sie würden sehen, ein Widget Pop-up und in der linken oberen Lauf finden Sie eine TextEdit Feld. Geben Sie einfach GOOG oder ein anderes gültiges Aktiensymbol ein und drücken Sie die Eingabetaste. Die Grafik wird mit den Daten des Bestands gefüllt. Der Schieberegler am unteren Rand ändert das Diagramm in Echtzeit.

Verwandte Themen