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