{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 11. előadás\n",
    "_Tartalom_: GUI, grafikus felhasználói felület készítése `pyqt` és `pyqtgraph` segítségével.\n",
    "\n",
    "`Pyqt` segítségével felhasználói felületeket készíthetünk, amiket nem csupán scripként, de futtatható állományként, vagy akár telepítőként is használhatunk. Első lépésként ellenőrizzük, hogy telepítve vannak-e a szükséges package-k, a következő importokkal:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import PyQt5\n",
    "import pyqtgraph"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Amennyiben `ModuleNotFoundError`-t kapunk telepítsük a két package-t:\n",
    "```\n",
    "pip install pyqt5\n",
    "pip install pyqtgraph\n",
    "```\n",
    "## Első példa\n",
    "Próbáljuk ki az első rövid kódot:\n",
    "\n",
    "----\n",
    "```python\n",
    "import PyQt5.QtWidgets as qtw\n",
    "\n",
    "app = qtw.QApplication([])\n",
    "window = qtw.QWidget()\n",
    "layout = qtw.QHBoxLayout() \n",
    "b1 = qtw.QPushButton(\"1-es gomb\")\n",
    "b2 = qtw.QPushButton(\"2-es gomb\")\n",
    "l1 = qtw.QLabel(\"--------\")\n",
    "layout.addWidget(b1)\n",
    "layout.addWidget(l1)\n",
    "layout.addWidget(b2)\n",
    "window.setLayout(layout)\n",
    "\n",
    "def button1_clicked(i):\n",
    "    l1.setText(\"Kattintás az 1-es gombra\")\n",
    "\n",
    "def button2_clicked(i):\n",
    "    l1.setText(\"Kattintás a 2-es gombra\")\n",
    "    app.processEvents()\n",
    "    alert = qtw.QMessageBox()\n",
    "    alert.setText(\"Rákattintottál a 2-es gombra\")\n",
    "    alert.exec_()\n",
    "\n",
    "b1.clicked.connect(button1_clicked)\n",
    "b2.clicked.connect(button2_clicked)\n",
    "window.show()\n",
    "app.exec_()\n",
    "```\n",
    "### Windows alatt így néz ki:\n",
    "![](data/pyqt01.png)\n",
    "### Linux alatt így néz ki:\n",
    "![](data/pyqt02.png)\n",
    "\n",
    "---\n",
    "\n",
    "## Nézzünk egy összetettebb példát\n",
    "A példában már `pyqtgraph`-ot is használjuk, grafinkonok megjelenítéséhez."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### _Used sources_ / Felhasznált források\n",
    "- [Shannon Turner: Python lessons repository](https://github.com/shannonturner/python-lessons) MIT license (c) Shannon Turner 2013-2014\n",
    "- [Siki Zoltán: Python mogyoróhéjban](http://www.agt.bme.hu/gis/python/python_oktato.pdf) GNU FDL license (c) Siki Zoltán\n",
    "- [BME AUT](https://github.com/bmeaut) MIT License Copyright (c) BME AUT 2016-2018\n",
    "- [PyQt5 tutorial (ZetCode)](http://zetcode.com/gui/pyqt5/)\n",
    "- [PyQt5 tutorial (fman)](https://build-system.fman.io/pyqt5-tutorial)\n",
    "- [pyqtgraph plotting](http://www.pyqtgraph.org/documentation/plotting.html)\n",
    "- [pyqtgraph examples](http://www.pyqtgraph.org/downloads/0.10.0/pyqtgraph-0.10.0-deb/pyqtgraph-0.10.0/examples/) (dockarea.py)\n",
    "- [pyqtgraph.org](http://www.pyqtgraph.org/)"
   ]
  }
 ],
 "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.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}