PyQt hello world
Python programming is quite easy, but it could be easier if we had access to a graphical interface for it. By the end of this tutorial, you will have accessed your first Python GUI application, and you’ll have done so in less than one minute.
Step 1: Install Python
Apple Mac OS X
To install the latest version of Python 3 on macOS, do the following:
Download the .dmg file from https://www.python.org/downloads/mac-osx/
Open the .dmg file and run the installer.
To open a terminal window with Python 3 installed, run: python3
Additional instructions can be found at https://docs.python.org/3/using/mac.
Microsoft Windows
If you want to install Python 3 on your Windows machine, there are a few steps you need to take.
Go to the Python website at https://www.python.org/downloads/windows/.
Click on the download link for Windows under the heading “Download the latest Python 3 release.” This will open a new page with a variety of download options.
Choose the one that says “Windows x86-64 executable installer” and wait for it to finish downloading.
Once it’s done, run the installer by double-clicking on it. Follow the prompts and choose all of the default options.
After Python is finished installing, open your Start menu and search for “IDLE (Python 3.7 64-bit)”.
This is a program that comes with Python and allows you to write and execute code in a graphical interface. Double-click on it to launch IDLE; once it’s open, you can start writing code!
Debian/Ubuntu Linux
Installing Python on Linux is usually pretty straightforward. For most Debian-based distributions, you can just open up a terminal window and type
sudo apt-get install python3
This will install the latest version of Python 3; if you want to install a specific version, you can add its number after “python3,” like this:
sudo apt-get install python3.6
Once the installation is finished, you can launch IDLE by typing “idle3” in the terminal.
To run a script you can type:
python your_file.py
Step 2: Install PyQt
python-qt5 is the Python bindings of Qt5, the cross-platform application and user interface development toolkit. This module provides Python language bindings for Qt5. Python-Qt5 gives Python bindings for Qt5.
Setting up this module is relatively simple and can be done through a few different methods. The most common way to install Python-Qt5 is by using a package manager such as pip.
Regardless of which method you choose, once everything is set up, you will be able to start writing code that utilizes the full power of Qt5!
pip install pyqt5 pyqt5-tools
On Debian/Ubuntu you can also use:
sudo apt install python3-pyqt5
Step 3: Write the code
PyQt window
The program below needs to be saved with the .py extension. The second line loads the PyQt5 module.
import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == '__main__':
# create PyQt app
app = QApplication(sys.argv)
# Create widget to draw in
w = QWidget()
# Set window size
w.resize(250, 150)
# Move window
w.move(300, 300)
# Set window title
w.setWindowTitle('Hello World')
# Show window
w.show()
# Run application
sys.exit(app.exec_())
Run the program with Python. The last line starts the app. As a desktop app, PyQt waits for events and keeps running until the program is closed.
Hello World
Instead of QWidget, the class QMainWindow is often used. The window can contain many different widgets like labels, buttons, images and more.
You can add a label in the window, which shows the text. To show text, use QLabel which is part of QtWidgets.
# importing the required libraries
from PyQt5.QtWidgets import *
import sys
class Window(QMainWindow):
def __init__(self):
super().__init__()
# set the window title
self.setWindowTitle("hello!")
# set the window width and height
self.setGeometry(0, 0, 320, 200)
# create label to display text
self.label = QLabel("Hello World", self)
# show all the widgets
self.show()
# create pyqt5 app
App = QApplication(sys.argv)
# create our Window
window = Window()
# start app
sys.exit(App.exec())
This creates a window with the title and the label.
QLabel
QLabel is a widget that displays text or an image. In Qt5, it can also display rich text, that is, HTML content.
A QLabel can contain any of the HTML tags supported by QtWebKit, including images and links. For example:
label = QLabel()
label.setText("<a href=\"http://www.google.com\">Google")
You can also set the QLabel to display an animated image by calling the setMovie() function with a QMovie object as argument. For example:
movie = QMovie("animated.gif")
label = QLabel()
label.setMovie(movie)
The program below displays an animated gif inside a QLabel.
import sys
from PyQt5.QtCore import Qt, QByteArray, QSettings, QTimer, pyqtSlot
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QSizePolicy, QVBoxLayout, QAction, QPushButton
from PyQt5.QtGui import QMovie
gifFile = "world.gif"
class GifPlayer(QWidget):
def __init__(self, title, gifFile, parent=None):
QWidget.__init__(self, parent)
self.movie = QMovie(gifFile, QByteArray(), self)
size = self.movie.scaledSize()
self.setGeometry(200, 200, size.width(), size.height())
self.setWindowTitle(title)
self.movie_screen = QLabel()
self.movie_screen.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.movie_screen.setAlignment(Qt.AlignCenter)
main_layout = QVBoxLayout()
main_layout.addWidget(self.movie_screen)
self.setLayout(main_layout)
self.movie.setCacheMode(QMovie.CacheAll)
self.movie_screen.setMovie(self.movie)
self.movie.start()
self.movie.loopCount()
if __name__ == "__main__":
app = QApplication(sys.argv)
player = GifPlayer("update this gif", "world.gif")
player.show()
sys.exit(app.exec_())
This displays an animated gif in your window. Could be a spinning earth gif or anything else.
That’s all there is to hello world. However, there is a lot more to GUI programming and PyQt.