Rapid GUI Programming with Python and Qt: the Definitive Guide to Pyqt Programming

Total Page:16

File Type:pdf, Size:1020Kb

Rapid GUI Programming with Python and Qt: the Definitive Guide to Pyqt Programming Rapid GUI Programming with Python and Qt: The Definitive Guide to PyQt Programming Table of Contents Copyright..................................................................................................... 1 About the Author........................................................................................ 2 Production.................................................................................................. 2 Introduction............................................................................................... 3 The Structure of the Book............................................................................................................................................................... 5 Acknowledgements......................................................................................................................................................................... 7 Python Programming.................................................................................. 8 Data Types and Data Structures..................................................................................................................................................... 8 Executing Python Code............................................................................................................................................................... 8 Variables and Objects................................................................................................................................................................ 12 Numbers and Strings................................................................................................................................................................. 16 Collections................................................................................................................................................................................. 32 Built-in Functions..................................................................................................................................................................... 42 Summary.................................................................................................................................................................................... 45 Exercises.................................................................................................................................................................................... 46 Control Structures......................................................................................................................................................................... 48 Conditional Branching.............................................................................................................................................................. 49 Looping...................................................................................................................................................................................... 52 Functions................................................................................................................................................................................... 58 Exception Handling................................................................................................................................................................... 70 Summary.................................................................................................................................................................................... 76 Exercises.................................................................................................................................................................................... 77 Classes and Modules..................................................................................................................................................................... 80 Creating Instances..................................................................................................................................................................... 82 Methods and Special Methods.................................................................................................................................................. 84 Inheritance and Polymorphism............................................................................................................................................... 105 Modules and Multi-File Applications....................................................................................................................................... 111 Summary.................................................................................................................................................................................. 114 Exercises................................................................................................................................................................................... 115 Basic GUI Programming.......................................................................... 116 Introduction to GUI Programming............................................................................................................................................. 116 A Pop-up Alert in 25 Lines....................................................................................................................................................... 117 An Expression Evaluator in 30 Lines...................................................................................................................................... 122 A Currency Converter in 70 Lines........................................................................................................................................... 129 Signals and Slots...................................................................................................................................................................... 134 Summary.................................................................................................................................................................................. 144 Exercise.................................................................................................................................................................................... 145 Dialogs......................................................................................................................................................................................... 145 Dumb Dialogs........................................................................................................................................................................... 147 Standard Dialogs...................................................................................................................................................................... 154 Smart Dialogs........................................................................................................................................................................... 161 Summary.................................................................................................................................................................................. 169 Exercise.................................................................................................................................................................................... 170 Main Windows............................................................................................................................................................................. 172 Creating a Main Window......................................................................................................................................................... 174 Handling User Actions............................................................................................................................................................ 201 Summary.................................................................................................................................................................................. 212 Exercise.................................................................................................................................................................................... 214 Using Qt Designer........................................................................................................................................................................ 215 Designing User Interfaces........................................................................................................................................................ 217 Implementing Dialogs............................................................................................................................................................. 228 Testing Dialogs........................................................................................................................................................................ 233 Summary................................................................................................................................................................................. 234 Exercise...................................................................................................................................................................................
Recommended publications
  • KDE 2.0 Development, Which Is Directly Supported
    23 8911 CH18 10/16/00 1:44 PM Page 401 The KDevelop IDE: The CHAPTER Integrated Development Environment for KDE by Ralf Nolden 18 IN THIS CHAPTER • General Issues 402 • Creating KDE 2.0 Applications 409 • Getting Started with the KDE 2.0 API 413 • The Classbrowser and Your Project 416 • The File Viewers—The Windows to Your Project Files 419 • The KDevelop Debugger 421 • KDevelop 2.0—A Preview 425 23 8911 CH18 10/16/00 1:44 PM Page 402 Developer Tools and Support 402 PART IV Although developing applications under UNIX systems can be a lot of fun, until now the pro- grammer was lacking a comfortable environment that takes away the usual standard activities that have to be done over and over in the process of programming. The KDevelop IDE closes this gap and makes it a joy to work within a complete, integrated development environment, combining the use of the GNU standard development tools such as the g++ compiler and the gdb debugger with the advantages of a GUI-based environment that automates all standard actions and allows the developer to concentrate on the work of writing software instead of managing command-line tools. It also offers direct and quick access to source files and docu- mentation. KDevelop primarily aims to provide the best means to rapidly set up and write KDE software; it also supports extended features such as GUI designing and translation in con- junction with other tools available especially for KDE development. The KDevelop IDE itself is published under the GNU Public License (GPL), like KDE, and is therefore publicly avail- able at no cost—including its source code—and it may be used both for free and for commer- cial development.
    [Show full text]
  • Exercise for Topic: Linux 10 Points 1. Configuration of the KDE Desktop
    Exercise for topic: Linux 10 points 1. Configuration of the KDE Desktop Carry out different steps of the configuration to customize your KDE screen. First copy a small photo about you into your lecture home directory: /home/<yourlogin>/Desktop, the photo will be visible on the Desktop as an icon. 1. Create Keyboard Layouts for KDE (1 point) - create at least three different layouts (the english, the german layout, and the layout for your country, too, (or something else, if it's the german or english one)). - make a screen shot (linux-keyboard.jpg) about the final configuration of the keyboard layout. 2. Create Multiple Desktops (1 point) - choose 6 multiple desktops, please 3. Create KDE desktop icons for the following applications: (3 points) 1. gnome-nettool 2. ksnapshot 3. firefox 4. thunderbird 5. gimp 6. k3b 7. kdirstat 8. Mathematica 7.0 (check with 'which mathematica' for the path for the application.) 4. Create KDE toolbar applets for the following applets in the given order from left to right: (1 point) 1. System monitor 2. Weather report 3. Clock 5. Create the following KDE toolbar applications: (1 point) 1. Thunderbird (Icedove) 2. Firefox (Iceweasel) 3. Konsole 6. Invoke ksnapshot and create a full screen shot (linux-all-items.jpg) with the items created in steps 2, 3, 4 and 5, in such a way, that knapshot is visible on the screen, too ! (1 point) 7. invoke kdirstat and K3B, and make a full screen shot (linux-k3b.jpg) where both applications are visible. (1 point) 8. invoke kile, compile a latex file to pdf and display the pdf result.
    [Show full text]
  • C/C++ Programming with Qt 5.12.6 and Opencv 4.2.0
    C/C++ programming with Qt 5.12.6 and OpenCV 4.2.0 Preparation of the computer • Download http://download.qt.io/archive/qt/5.12/5.12.6/qt-opensource-windows- x86-5.12.6.exe and http://www.ensta-bretagne.fr/lebars/Share/OpenCV4.2.0.zip (contains OpenCV with extra modules built for Visual Studio 2015, 2017, 2019, MinGW Qt 5.12.6 x86, MinGW 8 x64), run Qt installer and select Qt\Qt 5.12.6\MinGW 7.3.0 32 bit and Qt\Tools\MinGW 7.3.0 32 bit options and extract OpenCV4.2.0.zip in C:\ (check that the extraction did not create an additional parent folder (we need to get only C:\OpenCV4.2.0\ instead of C:\OpenCV4.2.0\OpenCV4.2.0\), right-click and choose Run as administrator if needed). For Linux or macOS, additional/different steps might be necessary depending on the specific versions (and the provided .pro might need to be tweaked), see https://www.ensta-bretagne.fr/lebars/Share/setup_opencv_Ubuntu.pdf ; corresponding OpenCV sources : https://github.com/opencv/opencv/archive/4.2.0.zip and https://github.com/opencv/opencv_contrib/archive/4.2.0.zip ; Qt Linux 64 bit : https://download.qt.io/archive/qt/5.12/5.12.6/qt-opensource-linux-x64-5.12.6.run (for Ubuntu you can try sudo apt install qtcreator qt5-default build-essential but the version will probably not be the same); Qt macOS : https://download.qt.io/archive/qt/5.12/5.12.6/qt-opensource-mac-x64-5.12.6.dmg .
    [Show full text]
  • Python Qt Tutorial Documentation Release 0.0
    Python Qt tutorial Documentation Release 0.0 Thomas P. Robitaille Jun 11, 2018 Contents 1 Installing 3 2 Part 1 - Hello, World! 5 3 Part 2 - Buttons and events 7 4 Part 3 - Laying out widgets 9 5 Part 4 - Dynamically updating widgets 13 i ii Python Qt tutorial Documentation, Release 0.0 This is a short tutorial on using Qt from Python. There are two main versions of Qt in use (Qt4 and Qt5) and several Python libraries to use Qt from Python (PyQt and PySide), but rather than picking one of these, this tutorial makes use of the QtPy package which provides a way to use whatever Python Qt package is available. This is not meant to be a completely exhaustive tutorial but just a place to start if you’ve never done Qt development before, and it will be expanded over time. Contents 1 Python Qt tutorial Documentation, Release 0.0 2 Contents CHAPTER 1 Installing 1.1 conda If you use conda to manage your Python environment (for example as part of Anaconda or Miniconda), you can easily install Qt, PyQt5, and QtPy (a common interface to all Python Qt bindings) using: conda install pyqt qtpy 1.2 pip If you don’t make use of conda, an easy way to install Qt, PyQt5, and QtPy is to do: pip install pyqt5 qtpy 3 Python Qt tutorial Documentation, Release 0.0 4 Chapter 1. Installing CHAPTER 2 Part 1 - Hello, World! To start off, we need to create a QApplication object, which represents the overall application: from qtpy.QtWidgets import QApplication app= QApplication([]) You will always need to ensure that a QApplication object exists, otherwise your Python script will terminate with an error if you try and use any other Qt objects.
    [Show full text]
  • Testing Pyside/Pyqt Code Using the Pytest Framework and Pytest-Qt
    Testing PySide/PyQt Code Using the pytest framework and pytest-qt Florian Bruhin “The Compiler” Bruhin Software 06. November 2019 Qt World Summit, Berlin About me • 2011: Started using Python • 2013: Started using PyQt and developing qutebrowser • 2015: Switched to pytest, ended up as a maintainer • 2017: qutebrowser v1.0.0, QtWebEngine by default • 2019: 40% employed, 60% open-source and freelancing (Bruhin Software) Giving trainings and talks at various conferences and companies! Relevant Python features Decorators registered_functions: List[Callable] = [] def register(f: Callable) -> Callable: registered_functions.append(f) return f @register def func() -> None: .... Relevant Python features Context Managers def write_file() -> None: with open("test.txt", "w") as f: f.write("Hello World") Defining your own: Object with special __enter__ and __exit__ methods. Relevant Python features Generators/yield def gen_values() -> Iterable[int] for i in range(4): yield i print(gen_values()) # <generator object gen_values at 0x...> print(list(gen_values())) # [0, 1, 2, 3] PyQt • Started in 1998 (!) by Riverbank Computing • GPL/commercial • Qt4 $ PyQt4 Qt5 $ PyQt5 PySide / Qt for Python • Started in 2009 by Nokia • Unmaintained for a long time • Since 2016: Officially maintained by the Qt Company again • LGPL/commercial • Qt4 $ PySide Qt5 $ PySide2 (Qt for Python) Qt and Python import sys from PySide2.QtWidgets import QApplication, QWidget, QPushButton if __name__ == "__main__": app = QApplication(sys.argv) window = QWidget() button = QPushButton("Don't
    [Show full text]
  • An Introduction to Qt 4
    AnAn IntroductionIntroduction toto QtQt 44 Jason Trent [email protected] OOuutltliinnee . Why Trolltech? . Why Qt? . Qt 4 Widgets, Datatypes, and Structures . Qt Designer . qmake . Qt without C++ . Demo WWhhyy TTrroolllltetecchh?? .. QQtt aanndd QQttooppiiaa CCoorree aarree OOppeenn SSoouurrccee .. SSuuppppoorrtteedd bbyy mmuullttii--mmiilllliioonn ddoollllaarr ccoommppaannyy WWhhyy QQt?t? .. MMuullttii--ppllaattffoorrmm – No “virtual machines” or emulation layers – Native compilation for Windows, X11, and Mac • Utilizes core OS technologies (Core, Aero, …) – Extensions - ActiveQt, Motif Migration WWhhyy QQt?t? Over 400 C++ Classes . Not just a GUI toolkit – File handling – Networking – Process handling – Threading – Database access – Event loop processing – XML processing – OpenGL integration – and beyond WWhhyy QQt?t? .. IInntteerrnnaattiioonnaalliizzaattiioonn – Built in support for Unicode and Translation • Language and font aware layouts • Bidirectional font support • Mixed-international interface .. SSeeee QQtt LLiinngguuiisstt ffoorr mmoorree WWhhyy QQt?t? .. NNoott jjuusstt mmuuttllii--ppllaattiiffoorrmm,, mmuullttii--aarrcchhiitteeccttuurree .. QQttooppiiaa CCoorree 44 SSeerriieess – Support for embedded devices • Cell phones, PDAs, etc… – Supports Qt4 widgets with little to no code change QQWWiiddggeett TThhee mmeeeekk mmaayy iinnhheerriitt tthhee eeaarrtthh…… ……bbuutt tthhee eeaarrtthh sshhaallll iinnhheerriitt QQWWiiddggeett QWidget QQtt 44 WWiiddggeetsts .. IInnhheerriitt tthhee aallll--ppoowweerrffuull QQWWiiddggeett .. IInncclluuddee::
    [Show full text]
  • A Pyqt GUI for a Soc Design a Pyqt GUI for a Soc Design SMR3249
    Jose´ Antonio de la Torre las Heras Universidad de Castilla-La Mancha SMR3249 A PyQT GUI for a SoC design A PyQT GUI for a SoC design SMR3249 Contents 1 Vivado and SDK 4 2 main.c 9 3 Opening development environment 9 4 Designing the interface 11 4.1 Design in QtDesigner . 11 4.2 Exporting the interface . 18 5 Programming the controller 19 6 Testing the design 26 7 Optional exercises 31 7.1 Add controls to select a serial device and baudrate (easy) . 31 7.2 Use layouts to make tabs responsive . 31 7.3 Modify how pyqtgraph looks (easy) . 31 7.4 Modify how data is sent . 31 1 A PyQT GUI for a SoC design SMR3249 Introduction In this tutorial, you will learn how to communicate external devices like pmods sensors, and leds from Zedboard to a PC (frontend). In order to avoid privative software like: Matlab, Visual Basic, Labview. In this laboratory, we are going to use Python and different libraries which are completely free and open source. The advantages of using these kind of technologies are the following ones: you have control over all parts of your system and you don't need to trust in external companies and private design cycles. In this project, you will learn how to integrate a fully functional project from a reconfigurable part to high level programming in Python. The main objective of the project is that the student, at the end, understands how to integrate all the parts to create a final product. Objectives • To design a fully functional GUI (Graphical User Interface) • To create a controller of the GUI • To connect a Zedboard to the GUI • To control a Zedboard from the GUI • To get data and plot from Zedboard Procedure This project has different parts.
    [Show full text]
  • KDE Free Qt Foundation Strengthens Qt
    How the KDE Free Qt Foundation strengthens Qt by Olaf Schmidt-Wischhöfer (board member of the foundation)1, December 2019 Executive summary The development framework Qt is available both as Open Source and under paid license terms. Two decades ago, when Qt 2.0 was first released as Open Source, this was excep- tional. Today, most popular developing frameworks are Free/Open Source Software2. Without the dual licensing approach, Qt would not exist today as a popular high-quality framework. There is another aspect of Qt licensing which is still very exceptional today, and which is not as well-known as it ought to be. The Open Source availability of Qt is legally protected through the by-laws and contracts of a foundation. 1 I thank Eike Hein, board member of KDE e.V., for contributing. 2 I use the terms “Open Source” and “Free Software” interchangeably here. Both have a long history, and the exact differences between them do not matter for the purposes of this text. How the KDE Free Qt Foundation strengthens Qt 2 / 19 The KDE Free Qt Foundation was created in 1998 and guarantees the continued availabil- ity of Qt as Free/Open Source Software3. When it was set up, Qt was developed by Troll- tech, its original company. The foundation supported Qt through the transitions first to Nokia and then to Digia and to The Qt Company. In case The Qt Company would ever attempt to close down Open Source Qt, the founda- tion is entitled to publish Qt under the BSD license. This notable legal guarantee strengthens Qt.
    [Show full text]
  • Schon Mal Dran Gedacht,Linux Auszuprobieren? Von G. Schmidt
    Schon mal dran gedacht, Linux auszuprobieren? Eine Einführung in das Betriebssystem Linux und seine Distributionen von Günther Schmidt-Falck Das Magazin AUSWEGE wird nun schon seit 2010 mit Hilfe des Computer-Betriebs- system Linux erstellt: Texte layouten, Grafiken und Fotos bearbeiten, Webseiten ge- stalten, Audio schneiden - alles mit freier, unabhängiger Software einer weltweiten Entwicklergemeinde. Aufgrund der guten eigenen Erfahrungen möchte der folgende Aufsatz ins Betriebssystem Linux einführen - mit einem Schwerpunkt auf der Distri- bution LinuxMint. Was ist Linux? „... ein hochstabiles, besonders schnelles und vor allem funktionsfähiges Betriebssystem, das dem Unix-System ähnelt, … . Eine Gemeinschaft Tausender programmierte es und verteilt es nun unter der GNU General Public Li- cense. Somit ist es frei zugänglich für jeden und kos- tenlos! Mehrere Millionen Leute, viele Organisatio- nen und besonders Firmen nutzen es weltweit. Die meisten nutzen es aus folgenden Gründen: • besonders schnell, stabil und leistungs- stark • gratis Support aus vielen Internet- Newsgruppen Tux, der Pinguin, ist das Linux-Maskottchen • übersichtliche Mailing-Listen • massenweise www-Seiten • direkter Mailkontakt mit dem Programmierer sind möglich • Bildung von Gruppen • kommerzieller Support“1 Linux ist heute weit verbreitet im Serverbereich: „Im Oktober 2012 wurden mindes- tens 32% aller Webseiten auf einem Linux-Server gehostet. Da nicht alle Linux-Ser- ver sich auch als solche zu erkennen geben, könnte der tatsächliche Anteil um bis zu 24% höher liegen. Damit wäre ein tatsächlicher Marktanteil von bis zu 55% nicht 1 http://www.linuxnetworx.com/linux-richtig-nutzen magazin-auswege.de – 2.11.2015 Schon mal dran gedacht, Linux auszuprobieren? 1 auszuschliessen. (…) Linux gilt innerhalb von Netzwerken als ausgesprochen sicher und an die jeweiligen Gegebenheiten anpassbar.
    [Show full text]
  • Release Notes for Fedora 15
    Fedora 15 Release Notes Release Notes for Fedora 15 Edited by The Fedora Docs Team Copyright © 2011 Red Hat, Inc. and others. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. For guidelines on the permitted uses of the Fedora trademarks, refer to https:// fedoraproject.org/wiki/Legal:Trademark_guidelines. Linux® is the registered trademark of Linus Torvalds in the United States and other countries. Java® is a registered trademark of Oracle and/or its affiliates. XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries. All other trademarks are the property of their respective owners.
    [Show full text]
  • Rkward: a Comprehensive Graphical User Interface and Integrated Development Environment for Statistical Analysis with R
    JSS Journal of Statistical Software June 2012, Volume 49, Issue 9. http://www.jstatsoft.org/ RKWard: A Comprehensive Graphical User Interface and Integrated Development Environment for Statistical Analysis with R Stefan R¨odiger Thomas Friedrichsmeier Charit´e-Universit¨atsmedizin Berlin Ruhr-University Bochum Prasenjit Kapat Meik Michalke The Ohio State University Heinrich Heine University Dusseldorf¨ Abstract R is a free open-source implementation of the S statistical computing language and programming environment. The current status of R is a command line driven interface with no advanced cross-platform graphical user interface (GUI), but it includes tools for building such. Over the past years, proprietary and non-proprietary GUI solutions have emerged, based on internal or external tool kits, with different scopes and technological concepts. For example, Rgui.exe and Rgui.app have become the de facto GUI on the Microsoft Windows and Mac OS X platforms, respectively, for most users. In this paper we discuss RKWard which aims to be both a comprehensive GUI and an integrated devel- opment environment for R. RKWard is based on the KDE software libraries. Statistical procedures and plots are implemented using an extendable plugin architecture based on ECMAScript (JavaScript), R, and XML. RKWard provides an excellent tool to manage different types of data objects; even allowing for seamless editing of certain types. The objective of RKWard is to provide a portable and extensible R interface for both basic and advanced statistical and graphical analysis, while not compromising on flexibility and modularity of the R programming environment itself. Keywords: GUI, integrated development environment, plugin, R.
    [Show full text]
  • Download Pyqt Tutorial (PDF Version)
    PyQt About the Tutorial PyQt is a GUI widgets toolkit. It is a Python interface for Qt, one of the most powerful, and popular cross-platform GUI library. PyQt is a blend of Python programming language and the Qt library. This introductory tutorial will assist you in creating graphical applications with the help of PyQt. Audience This tutorial is designed for software programmers who are keen on learning how to develop graphical applications using PyQt. Prerequisites You should have a basic understanding of computer programming terminologies. A basic understanding of Python and any of the programming languages is a plus. Disclaimer & Copyright Copyright 2015 by Tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish any contents or a part of contents of this e-book in any manner without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial. If you discover any errors on our website or in this tutorial, please notify us at [email protected]. i PyQt Table of Contents About the Tutorial ..............................................................................................................................................
    [Show full text]