Introduction to PyQt5-Qt5
PyQt5 is a set of Python bindings for The Qt Company’s Qt application framework. It is a popular tool for creating cross-platform applications because of its simplicity and flexibility. In this tutorial, we will introduce PyQt5-Qt5 and explore dozens of useful APIs with code snippets. By the end of this article, you will be able to create complex GUI applications using PyQt5.
Basic PyQt5 Application
Let’s start with a basic PyQt5 application:
import sys
from PyQt5.QtWidgets import QApplication, QLabel
app = QApplication(sys.argv)
label = QLabel('Hello, PyQt5!')
label.show()
sys.exit(app.exec_())
Layouts and Widgets
Layouts in PyQt5 help in arranging widgets on the application window. Below is an example of using QVBoxLayout:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
button1 = QPushButton('Button 1')
button2 = QPushButton('Button 2')
layout.addWidget(button1)
layout.addWidget(button2)
window.setLayout(layout)
window.show()
app.exec_()
Signals and Slots
Signals and slots are used for communication between objects. Here is an example:
from PyQt5.QtCore import pyqtSignal, QObject
class Communicator(QObject):
signal = pyqtSignal()
def caught_signal():
print('Signal caught!')
comm = Communicator()
comm.signal.connect(caught_signal)
comm.signal.emit()
Handling Events
Event handling is another powerful feature of PyQt5. Below is an example of key press event handling:
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import Qt
class MyWidget(QWidget):
def keyPressEvent(self, event):
if event.key() == Qt.Key_Escape:
self.close()
app = QApplication([])
window = MyWidget()
window.show()
app.exec_()
Building a Simple Application
Now, let’s combine the knowledge and build a simple application:
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget,
QVBoxLayout, QPushButton, QLabel)
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
central_widget = QWidget()
self.setCentralWidget(central_widget)
layout = QVBoxLayout()
central_widget.setLayout(layout)
self.label = QLabel('Hello, PyQt5!', self)
layout.addWidget(self.label)
button = QPushButton('Press Me', self)
button.clicked.connect(self.on_button_clicked)
layout.addWidget(button)
self.setWindowTitle('Simple App')
def on_button_clicked(self):
self.label.setText('Button Pressed!')
def keyPressEvent(self, event):
if event.key() == Qt.Key_Escape:
self.close()
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit(app.exec_())
Hash: d1cb174123d508853a08fc35025901f2a8a8266ab9a79a14ed4ddd26643d3340