{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "%matplotlib inline"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "\n# PyQt example\n\nA minimal(-ish) working example using PyQt5. Courtesy of github user LBeghini_.\n\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "import sys\nimport matplotlib; matplotlib.use(\"Qt5Agg\")\n\nfrom PyQt5 import QtWidgets, QtCore\nfrom matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT\nfrom matplotlib.figure import Figure\nfrom netgraph import EditableGraph\n\n\nclass MplCanvas(FigureCanvasQTAgg):\n    def __init__(self, parent=None, width=5, height=4, dpi=100):\n        super(MplCanvas, self).__init__(Figure(figsize=(width, height), dpi=dpi))\n        self.setParent(parent)\n        self.ax = self.figure.add_subplot(111)\n        self.graph = EditableGraph([(0, 1)], ax=self.ax)\n\n\nclass MainWindow(QtWidgets.QMainWindow):\n    def __init__(self, *args, **kwargs):\n        super(MainWindow, self).__init__(*args, **kwargs)\n\n        self.canvas = MplCanvas(self, width=5, height=4, dpi=100)\n\n        # Enable key_press_event events:\n        # https://github.com/matplotlib/matplotlib/issues/707/#issuecomment-4181799\n        self.canvas.setFocusPolicy(QtCore.Qt.ClickFocus)\n        self.canvas.setFocus()\n\n        self.toolbar = NavigationToolbar2QT(self.canvas, self)\n\n        widget = QtWidgets.QWidget()\n        self.setCentralWidget(widget)\n\n        layout = QtWidgets.QVBoxLayout(widget)\n        layout.addWidget(self.toolbar)\n        layout.addWidget(self.canvas)\n\n\ndef main():\n    app = QtWidgets.QApplication(sys.argv)\n    w = MainWindow()\n    w.show()\n    app.exec_()\n\n\nif __name__ == \"__main__\":\n    main()"
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.9.12"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}