PyQt5 基础教程

  • Post category:Python

PyQt5是基于Qt库,用于创建Python GUI应用程序的Python模块。本文将详细介绍三个主要的模块PyQt5.QtWidgets,PyQt5.QtGui和PyQt5.QtCore。下面是“PyQt5 基础教程”的完整使用攻略。

安装PyQt5

在终端中输入以下命令来安装PyQt5模块:

pip install PyQt5

导入PyQt5模块

在Python代码中导入PyQt5模块:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QWidget, QVBoxLayout, QHBoxLayout, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

创建GUI应用程序

创建GUI应用程序,并通过调用QApplication类的exec()方法执行该应用程序。

app = QApplication([])
window = QMainWindow()
window.show()
app.exec_()

添加Widgets

创建QWidget,并在其中添加QLabel和QPushButton组件。

widget = QWidget()
layout = QVBoxLayout()
label = QLabel('Hello World!')
button = QPushButton('Click me!')

layout.addWidget(label)
layout.addWidget(button)

widget.setLayout(layout)
widget.show()
app.exec_()

响应按钮单击事件

为QPushButton添加单击事件响应函数。

@pyqtSlot()
def on_button_click():
    label.setText('Button clicked')

button.clicked.connect(on_button_click)

示例1:简单的GUI应用程序

下面是一个简单的GUI应用程序的示例:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QWidget, QVBoxLayout, QHBoxLayout, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

app = QApplication([])
window = QMainWindow()
window.setWindowTitle('My First PyQt5 Application')
window.setFixedSize(400, 300)

central_widget = QWidget()
layout = QVBoxLayout()
central_widget.setLayout(layout)

title_label = QLabel('Welcome to my app')
title_label.setFont('Arial', 20)

button_layout = QHBoxLayout()
button_1 = QPushButton('Button 1')
button_2 = QPushButton('Button 2')

button_layout.addWidget(button_1)
button_layout.addWidget(button_2)

layout.addWidget(title_label)
layout.addLayout(button_layout)

window.setCentralWidget(central_widget)
window.show()

@pyqtSlot()
def on_button_1_click():
    title_label.setText('Button 1 clicked')

@pyqtSlot()
def on_button_2_click():
    title_label.setText('Button 2 clicked')

button_1.clicked.connect(on_button_1_click)
button_2.clicked.connect(on_button_2_click)

app.exec_()

在这个应用程序中,我们创建了一个标题标签和两个按钮。当单击第一个按钮时,标题标签文本将更改为“Button 1 clicked”,当单击第二个按钮时,将更改为“Button 2 clicked”。

示例2:简单的计算器应用程序

下面是一个简单的计算器应用程序,它可以将两个数字相加或相乘:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLineEdit
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

app = QApplication([])
window = QMainWindow()
window.setWindowTitle('Calculator')
window.setFixedSize(400, 300)

central_widget = QWidget()
layout = QVBoxLayout()
central_widget.setLayout(layout)

input_layout = QHBoxLayout()
input_1 = QLineEdit()
input_2 = QLineEdit()
input_layout.addWidget(input_1)
input_layout.addWidget(input_2)

button_layout = QHBoxLayout()
add_button = QPushButton('Add')
multiply_button = QPushButton('Multiply')
button_layout.addWidget(add_button)
button_layout.addWidget(multiply_button)

layout.addLayout(input_layout)
layout.addLayout(button_layout)

result_label = QLabel('Result: ')
result_value_label = QLabel('')

layout.addWidget(result_label)
layout.addWidget(result_value_label)

window.setCentralWidget(central_widget)
window.show()

@pyqtSlot()
def on_add_button_click():
    num_1 = float(input_1.text())
    num_2 = float(input_2.text())
    result = num_1 + num_2
    result_value_label.setText(str(result))

@pyqtSlot()
def on_multiply_button_click():
    num_1 = float(input_1.text())
    num_2 = float(input_2.text())
    result = num_1 * num_2
    result_value_label.setText(str(result))

add_button.clicked.connect(on_add_button_click)
multiply_button.clicked.connect(on_multiply_button_click)

app.exec_()

在这个应用程序中,我们创建了两个文本框和两个按钮。当单击“Add”按钮时,将对两个数字执行加法。当单击“Multiply”按钮时,将对两个数字执行乘法。结果将显示在标签中。