PyQt5.QtWidgets简介
PyQt5.QtWidgets 是 PyQt5 库中的一个模块,它包含了用于创建图形用户界面(GUI)的各种小部件(widgets)。这些小部件可以用来构建窗口、对话框、按钮、文本框、列表框、菜单等用户界面元素。以下是一些常用的 PyQt5.QtWidgets 模块中的类和它们的基本用途:
常用类和用途:
- QApplication
管理 GUI 应用程序的控制流和主要设置。每个 PyQt5 应用程序都需要一个 QApplication 对象。
- QWidget
所有用户界面对象的基类。一个 QWidget 对象可以是一个窗口或控件,可以包含其他控件。
- QMainWindow
提供一个主应用程序窗口,可以包含菜单栏、工具栏、状态栏和中央窗口部件。
- QDialog
用于创建对话框窗口的基本类。对话框可以是模态的或非模态的。
- QLabel
用于显示文本或图像。
- QPushButton
提供一个按钮控件,用户可以点击。
- QLineEdit
提供一个单行文本输入框。
- QTextEdit
提供一个多行文本编辑框,支持富文本格式。
- QComboBox
提供一个下拉列表框。
- QSpinBox 和 QDoubleSpinBox
提供数字输入框,QSpinBox 用于整数,QDoubleSpinBox 用于浮点数。
- QProgressBar
提供一个进度条,用于显示任务的进度。
- QVBoxLayout 和 QHBoxLayout
提供垂直和水平布局管理器,用于自动排列窗口中的小部件。
- QGridLayout
提供一个网格布局管理器,可以在网格中排列小部件。
- QMenuBar, QToolBar, QStatusBar
分别提供菜单栏、工具栏和状态栏。
- QMessageBox
提供一个标准对话框,用于显示消息、警告、错误等。
from PyQt5.QtWidgets import *
示例代码
以下是一个简单的 PyQt5 应用程序示例,展示了如何使用 PyQt5.QtWidgets 模块中的几个类:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('PyQt5 Example')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
label = QLabel('Hello, PyQt5!', self)
layout.addWidget(label)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
ex.show()
sys.exit(app.exec_())
常用函数
设置窗口标题和固定大小
self.setWindowTitle("加载数据中。。。")
self.setFixedSize(400, 100)
400*100像素
创建垂直布局
layout = QVBoxLayout()
self.setLayout(layout)
创建标签控件
layout = QVBoxLayout()
label = QLabel('Hello, PyQt5!', self)
layout.addWidget(label)
self.setLayout(layout)
label = QLabel(‘Hello, PyQt5!’, self) 和 layout.addWidget(label) 是 PyQt5 中创建和布局标签控件的基本步骤。通过使用布局管理器,可以确保窗口部件在窗口大小变化时能够正确地调整位置和大小,从而提供更好的用户体验。
创建进度条
self.progress_bar = QProgressBar()
self.progress_bar.setRange(0, 0) # 设置进度条为循环加载
layout.addWidget(self.progress_bar)
继承父类对象
super().__init__()
在 Python 中,super().init() 是一种调用父类方法的常见方式,特别是在子类的构造函数(init 方法)中。这个调用确保了父类的初始化逻辑得到执行,这对于继承和多态性是非常重要的。
解释 super().init()
super(): 这是一个内置函数,它返回一个代理对象,让你能够调用父类(或兄弟类)的方法。在 Python 2.x 中,你需要提供两个参数:super(子类名, self),而在 Python 3.x 中,super() 不需要参数,它会自动根据当前的类和实例来确定父类。
init(): 这是 Python 中的构造函数,当一个类的实例被创建时,这个方法会自动被调用。它用于初始化实例的状态。
当你在子类的 init 方法中调用 super().init() 时,你实际上是在告诉 Python 去调用父类的 init 方法。这样做的好处是,你可以确保父类的初始化代码得到执行,同时还可以在子类中添加或修改特定的初始化逻辑。
创建一个 QApplication 对象和退出应用程序
app = QApplication(sys.argv)
在 PyQt5 应用程序中,app = QApplication(sys.argv) 这行代码是创建一个 QApplication 对象的关键步骤。这个对象是整个应用程序的控制中心,负责管理应用程序的资源、事件循环、窗口行为等。
解释 QApplication(sys.argv)
QApplication: 这是 PyQt5 中的一个核心类,用于创建应用程序对象。每个 PyQt5 应用程序都必须创建一个 QApplication 对象。这个对象负责初始化应用程序,并处理应用程序级别的事件和资源。
sys.argv: 这是一个包含命令行参数的列表。在 Python 中,sys.argv 包含了从命令行传递给脚本的参数。第一个元素(sys.argv[0])是脚本的路径名。使用 sys.argv 作为 QApplication 的参数,可以使得应用程序能够接收并处理命令行参数。
sys.exit(app.exec_())
sys.exit(app.exec_()) 是 PyQt5 应用程序中用于启动事件循环并确保应用程序正常退出的关键代码。这行代码通常位于 PyQt5 应用程序的最后。
解释 sys.exit(app.exec_())
app.exec_(): 这是 QApplication 对象的一个方法,它启动应用程序的事件循环。事件循环是 GUI 应用程序的核心,它负责监听和分发事件(如鼠标点击、键盘输入、窗口重绘等)。一旦调用了 exec_(),应用程序将进入一个无限循环,直到用户关闭应用程序或调用了特定的退出方法。
sys.exit(): 这是 Python 的 sys 模块中的一个函数,用于退出当前的 Python 解释器进程。当 sys.exit() 被调用时,它会尝试以指定的退出状态码(通常是 0 表示正常退出,非零值表示异常退出)退出进程。在 GUI 应用程序中,通常将 sys.exit() 与 app.exec_() 的返回值一起使用,以确保应用程序在退出时能够正确地清理资源。