Ein Element in die Symbolleiste von matplotlib hinzufügen
Ich habe eine Matplotlib Figur in einem @ erstelQMainWindow
, benutze PyQt und ich versuche, der Symbolleiste der Matplotlib in meinem Code eine Schaltfläche hinzuzufügen. Dies ist dasNavigationToolbar
dass ich erstellt habe:
Ich habe diese Buttons mit dem @ hinzugefüaddWidget
Methode. Ich muss jedoch ein Symbol erstellen und in die Symbolleiste einfügen. Dies ist ein Teil meines Codes:
class A(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.mainWidget = QWidget()
self.setCentralWidget(self.mainWidget)
layout = QVBoxLayout()
self.mainWidget.setLayout(layout)
self.figure_canvas = FigureCanvas(Figure())
layout.addWidget(self.figure_canvas, 10)
self.axes = self.figure_canvas.figure.add_subplot(111)
self.navigation_toolbar = NavigationToolbar2(self.figure_canvas, self)
self.addToolBar(Qt.TopToolBarArea, self.navigation_toolbar)
self.btn_selection_tool3 = QPushButton(, "Connect")
self.navigation_toolbar.addWidget(self.btn_selection_tool3)
self.btn_selection_tool2 = QPushButton()
self.navigation_toolbar.addWidget(self.btn_selection_tool2)
self.btn_showgrid = QPushButton("Show Grid")
self.navigation_toolbar.addWidget(self.btn_showgrid)
self.btn_hidegrid = QPushButton("Hide Grid")
self.navigation_toolbar.addWidget(self.btn_hidegrid)
app = QApplication(sys.argv)
window = A()
window.show()
sys.exit(app.exec_())
Ich habe einige Codes und Fragen gesehen und diese gefunden, aber ich konnte nicht erreichen, was ich brauche. Dies sind die Links, die ich gelesen habe:
dale Lane - Navigationsleiste anpassen
Die Links sagten mir nur, wie ich einige von ihnen löschen konnte, und man arbeitet mit wx.
Wie kann ich diese Schaltflächen in der Symbolleiste hinzufügen, ohne @ zu verwendeQPushbutton
oderaddWidget
Methoden ?. Hoffe du kannst mir helfen
Based on @three_pineapples comment, Ich habe versucht, diese Klasse zu meinem Code hinzuzufügen:
class MyToolbar(NavigationToolbar2):
def __init__(self):
NavigationToolbar2.__init__(self)
self.iconDir = os.path.join(os.path.dirname(os.path.abspath(__file__)),
"..", "images", "icons", "")
self.a = self.addAction(QIcon(iconDir + "BYE2.ico"),
"Bye", self.bye)
self.a.setToolTip("GoodBye")
def bye(self):
print "See you next time")
Und ich instanziierte dabei:
self.navigation_toolbar = MyToolbar()
, Anstatt von
self.navigation_toolbar = NavigationToolbar2(self.figure_canvas, self)
Aber ich erhalte diesen Fehler:
TypeError: __init__() takes at least 3 arguments (1 given)
Ich habe versucht, @ hinzuzufüg*args
undkwargs
, aber ich weiß nicht was ich hier vermisse.
Ist dies der Weg, um eine Schaltfläche zur Symbolleiste der Matplotlib hinzuzufügen? Hoffe du kannst mir helfen.