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

Ändern Sie die Symbolleiste

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

------ EDIT ------

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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage