Python GUI

PyQt5 is a set of Python bindings for the Qt application framework, which is widely used for creating cross-platform graphical user interfaces (GUIs).

This article aims to provide a comprehensive guide for mastering Python GUI development using PyQt5.

Getting Started

To get started with PyQt5, you need to install it using pip:

pip install pyqt5

After installation, you can import the necessary modules in your Python script:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout

Creating a Simple GUI

Let's create a simple GUI with a single button.

class MyApp(QWidget):
    def init(self):
        super().init()
        self.initUI()
    def initUI(self):
        button = QPushButton('Click me!', self)
        layout = QVBoxLayout(self)
        layout.addWidget(button)
        self.setLayout(layout)
        self.setWindowTitle('My First PyQt5 App')
        self.show()
if name == 'main':
    app = QApplication([])
    ex = MyApp()
    app.exec_()

This script creates a new class MyApp that inherits from QWidget. The initUI method is used to set up the GUI. Here, we create a QPushButton and a QVBoxLayout, add the button to the layout, and set the layout to the widget.

Running this script will display a window with a single button.

Advanced GUI Elements

PyQt5 provides a wide range of widgets for creating complex GUIs. Here's an example of a GUI with a text input, a button, and a label to display the input:

class MyApp(QWidget):
    def init(self):
        super().init()
        self.initUI()
    def initUI(self):
        self.line_edit = QLineEdit(self)
        self.button = QPushButton('Submit', self)
        self.label = QLabel('', self)
        layout = QGridLayout(self)
        layout.addWidget(self.line_edit, 0, 0)
        layout.addWidget(self.button, 0, 1)
        layout.addWidget(self.label, 1, 0, 1, 2)
        self.button.clicked.connect(self.on_button_clicked)
        self.setWindowTitle('PyQt5 GUI')
        self.show()
    def on_button_clicked(self):
        text = self.line_edit.text()
        self.label.setText(text)
if name == 'main':
    app = QApplication([])
    ex = MyApp()
    app.exec_()

In this script, we've added a QLineEdit for user input, a QLabel to display the input, and connected the clicked signal of the button to the on_button_clicked slot. When the button is clicked, the text from the line edit is displayed in the label.

Result

PyQt5 is a powerful tool for creating cross-platform GUIs in Python. This guide has provided a basic introduction to creating GUIs with PyQt5, but there's much more to explore. For more advanced features, you can refer to the official PyQt5 documentation: https://www.riverbankcomputing.com/static/Docs/PyQt5/

We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.