PyQt6 特性介绍
PyQt6 是 Python 语言的一个 GUI 框架,基于 Qt 库开发。它允许开发者创建跨平台的桌面应用程序。以下是 PyQt6 的一些主要特性:
跨平台支持:PyQt6 支持 Windows、macOS、Linux 等多个操作系统。
丰富的控件库:PyQt6 提供了大量的 GUI 控件,如按钮、文本框、列表框、表格等。
强大的布局管理:PyQt6 提供了多种布局管理器(如 QVBoxLayout、QHBoxLayout、QGridLayout 等),帮助开发者轻松管理控件的位置和大小。
信号与槽机制:PyQt6 使用信号与槽机制来处理事件,使得事件处理更加灵活和高效。
多线程支持:PyQt6 支持多线程编程,允许开发者在后台执行耗时操作而不阻塞主线程。
国际化支持:PyQt6 提供了国际化支持,使得应用程序可以轻松地支持多种语言。
OpenGL 集成:PyQt6 支持 OpenGL,允许开发者创建高性能的 3D 图形应用程序。
数据库支持:PyQt6 提供了对 SQL 数据库的支持,可以轻松地与数据库进行交互。
Web 引擎集成:PyQt6 集成了 Qt WebEngine,允许开发者在应用程序中嵌入 Web 内容。
样式表支持:PyQt6 支持使用 CSS 样式表来定制控件的外观。
PyQt6 示例源码
以下是一个简单的 PyQt6 示例,展示了如何创建一个带有按钮和标签的窗口,并在点击按钮时更新标签的文本。
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel
class MyWindow(QWidget):
def __init__(self):
super().__init__()
# 设置窗口标题
self.setWindowTitle("PyQt6 示例")
# 创建布局
layout = QVBoxLayout()
# 创建标签
self.label = QLabel("点击按钮以更改文本")
layout.addWidget(self.label)
# 创建按钮
self.button = QPushButton("点击我")
self.button.clicked.connect(self.on_button_click)
layout.addWidget(self.button)
# 设置布局
self.setLayout(layout)
def on_button_click(self):
# 更新标签文本
self.label.setText("按钮被点击了!")
if __name__ == "__main__":
# 创建应用程序对象
app = QApplication(sys.argv)
# 创建窗口对象
window = MyWindow()
# 显示窗口
window.show()
# 运行应用程序
sys.exit(app.exec())
代码说明
QApplication:PyQt6 应用程序的核心类,负责管理应用程序的控制流和主要设置。
QWidget:所有用户界面对象的基类,窗口和控件都继承自 QWidget。
QVBoxLayout:垂直布局管理器,用于将控件垂直排列。
QPushButton:按钮控件,用户可以点击按钮触发事件。
QLabel:标签控件,用于显示文本或图像。
信号与槽:
self.button.clicked.connect(self.on_button_click)
将按钮的点击信号连接到on_button_click
槽函数,当按钮被点击时,槽函数会被调用。
运行示例
确保已安装 PyQt6:
pip install PyQt6
将上述代码保存为
example.py
文件。在终端或命令行中运行:
python example.py
你将看到一个窗口,点击按钮后,标签的文本会更新。
这个示例展示了 PyQt6 的基本用法,包括创建窗口、添加控件、处理事件等。
PyQt6 支持使用 QSS(Qt Style Sheets) 来美化界面。QSS 的语法类似于 CSS,可以通过设置样式表来改变控件的外观(如颜色、字体、边框、背景等)。
以下是一个结合 QSS 美化 PyQt6 界面的示例代码:
示例代码:使用 QSS 美化 PyQt6 界面
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel
class StyledWindow(QWidget):
def __init__(self):
super().__init__()
# 设置窗口标题
self.setWindowTitle("PyQt6 QSS 美化示例")
# 设置窗口大小
self.resize(300, 200)
# 创建布局
layout = QVBoxLayout()
# 创建标签
self.label = QLabel("这是一个标签")
layout.addWidget(self.label)
# 创建按钮
self.button = QPushButton("点击我")
self.button.clicked.connect(self.on_button_click)
layout.addWidget(self.button)
# 设置布局
self.setLayout(layout)
# 设置 QSS 样式表
self.setStyleSheet("""
QWidget {
background-color: #f0f0f0; /* 设置窗口背景颜色 */
font-family: "微软雅黑"; /* 设置字体 */
font-size: 14px; /* 设置字体大小 */
}
QLabel {
color: #333333; /* 设置标签文字颜色 */
font-size: 16px; /* 设置标签字体大小 */
font-weight: bold; /* 设置标签字体加粗 */
}
QPushButton {
background-color: #4CAF50; /* 设置按钮背景颜色 */
color: white; /* 设置按钮文字颜色 */
border-radius: 5px; /* 设置按钮圆角 */
padding: 10px; /* 设置按钮内边距 */
font-size: 14px; /* 设置按钮字体大小 */
}
QPushButton:hover {
background-color: #45a049; /* 设置按钮悬停时的背景颜色 */
}
QPushButton:pressed {
background-color: #3d8b40; /* 设置按钮按下时的背景颜色 */
}
""")
def on_button_click(self):
# 更新标签文本
self.label.setText("按钮被点击了!")
if __name__ == "__main__":
# 创建应用程序对象
app = QApplication(sys.argv)
# 创建窗口对象
window = StyledWindow()
# 显示窗口
window.show()
# 运行应用程序
sys.exit(app.exec())
代码说明
QSS 样式表:
通过
setStyleSheet
方法为窗口和控件设置样式。QSS 的语法类似于 CSS,支持选择器(如
QWidget
、QLabel
、QPushButton
)和伪状态(如:hover
、:pressed
)。可以设置背景颜色、字体、边框、圆角、内边距等属性。
样式表内容:
QWidget
:设置窗口的背景颜色和全局字体。QLabel
:设置标签的文字颜色、字体大小和加粗效果。QPushButton
:设置按钮的背景颜色、文字颜色、圆角、内边距等。QPushButton:hover
:设置按钮在鼠标悬停时的样式。QPushButton:pressed
:设置按钮在按下时的样式。
控件交互:
点击按钮后,标签的文本会更新。
运行效果
窗口背景为浅灰色,标签文字为深灰色且加粗。
按钮背景为绿色,文字为白色,带有圆角效果。
当鼠标悬停在按钮上时,按钮背景颜色会变深。
当按钮被按下时,按钮背景颜色会更深。
扩展:加载外部 QSS 文件
如果样式表内容较多,可以将 QSS 样式保存到外部文件中,然后在代码中加载。
创建一个
style.qss
文件,内容如下:
QWidget {
background-color: #f0f0f0;
font-family: "微软雅黑";
font-size: 14px;
}
QLabel {
color: #333333;
font-size: 16px;
font-weight: bold;
}
QPushButton {
background-color: #4CAF50;
color: white;
border-radius: 5px;
padding: 10px;
font-size: 14px;
}
QPushButton:hover {
background-color: #45a049;
}
QPushButton:pressed {
background-color: #3d8b40;
}
在代码中加载外部 QSS 文件:
def load_stylesheet(filename):
with open(filename, "r", encoding="utf-8") as f:
return f.read()
class StyledWindow(QWidget):
def __init__(self):
super().__init__()
# ...(其他代码)
# 加载外部 QSS 文件
self.setStyleSheet(load_stylesheet("style.qss"))
通过 QSS,可以轻松实现 PyQt6 界面的美化,同时保持代码的可维护性和灵活性。