{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Qt Demo\n", "\n", "This will launch various Qt compatible packages\n", "\n", "Nota: as of 2018-04-29th, PySide2-5.11 compatibility is\n", " - Ok for Qtconsole, Qtpy, pyzo, wppm \n", " - ToDo for PyQtgraph, Spyder, guidata, guiqwt, rx\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Qt4 & Qt5 Dedicated Graphic libraries: PyQtgraph, guidata, guiqwt" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# PyQtgraph (Scientific Graphics and GUI Library for Python)\n", "import pyqtgraph.examples; pyqtgraph.examples.run()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Guidata (Python library generating graphical user interfaces for easy dataset editing and display)\n", "from guidata import tests; tests.run()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Guiqwt (Efficient 2D plotting Python library based on PythonQwt)\n", "from guiqwt import tests; tests.run()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#QtDemo (if present)\n", "!if exist \"%WINPYDIR%\\Lib\\site-packages\\PyQt5\\examples\\qtdemo\\qtdemo.py\" \"%WINPYDIR%\\python.exe\" \"%WINPYDIR%\\Lib\\site-packages\\PyQt5\\examples\\qtdemo\\qtdemo.py\"\n", "!if exist \"%WINPYDIR%\\Lib\\site-packages\\PyQt4\\examples\\demos\\qtdemo\\qtdemo.pyw\"\"%WINPYDIR%\\pythonw.exe\" \"%WINPYDIR%\\Lib\\site-packages\\PyQt4\\examples\\demos\\qtdemo\\qtdemo.pyw\"\n", "!if exist \"%WINPYDIR%\\Lib\\site-packages\\PySide2\\examples\\datavisualization\" \"%WINPYDIR%\\python.exe\" \"%WINPYDIR%\\Lib\\site-packages\\PySide2\\examples\\datavisualization\\bars3d.py\"\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reactive programing: rx" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# from https://github.com/ReactiveX/RxPY/blob/master/examples/timeflie\n", "from rx.subjects import Subject\n", "from rx.concurrency import QtScheduler\n", "import sys\n", "\n", "try:\n", " from PyQt4 import QtCore\n", " from PyQt4.QtGui import QWidget, QLabel\n", " from PyQt4.QtGui import QApplication\n", "except ImportError:\n", " try:\n", " from PyQt5 import QtCore\n", " from PyQt5.QtWidgets import QApplication, QWidget, QLabel\n", " except ImportError:\n", " from PySide import QtCore\n", " from PySide.QtGui import QWidget, QLabel\n", " from PySide.QtGui import QApplication\n", "\n", "\n", "class Window(QWidget):\n", "\n", " def __init__(self):\n", " super(QWidget, self).__init__()\n", " self.setWindowTitle(\"Rx for Python rocks\")\n", " self.resize(600, 600)\n", " self.setMouseTracking(True)\n", "\n", " # This Subject is used to transmit mouse moves to labels\n", " self.mousemove = Subject()\n", "\n", " def mouseMoveEvent(self, event):\n", " self.mousemove.on_next((event.x(), event.y()))\n", "\n", "\n", "def main():\n", " app = QApplication(sys.argv)\n", " scheduler = QtScheduler(QtCore)\n", "\n", " window = Window()\n", " window.show()\n", "\n", " text = 'TIME FLIES LIKE AN ARROW'\n", " labels = [QLabel(char, window) for char in text]\n", "\n", " def handle_label(i, label):\n", "\n", " def on_next(pos):\n", " x, y = pos\n", " label.move(x + i*12 + 15, y)\n", " label.show()\n", "\n", " window.mousemove.delay(i*100, scheduler=scheduler).subscribe(on_next)\n", "\n", " for i, label in enumerate(labels):\n", " handle_label(i, label)\n", "\n", " sys.exit(app.exec_())\n", "\n", "if __name__ == '__main__':\n", " main()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!pip download --dest C:\\WinP\\a QtPy" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.6.5" }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 1 }