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”按钮时,将对两个数字执行乘法。结果将显示在标签中。