QLabel 标签控件
本文摘录自我的开源教程:PySide6 代码式教程 - QLabel,CSDN 平台仅做镜像,答疑、纠错请至 GitHub 提交 issue。
文本格式
QLabel
可以将其文本字符串解析为纯文本、HTML富文本、Markdown文本
- .setTextFormat(Qt.TextFormat) 设置文本格式,默认为Qt.AutoText
- .textFormat() -> Qt.TextFormat 获取文本格式
Qt.TextFormat 具体分为四种:
- Qt.PlaintText 将文本字符串解析为纯文本
- Qt.RichText 将文本字符串解析为富文本
- Qt.AutoText 自动识别为纯文本或富文本
- Qt.MarkdownText 将文本字符串解析为Markdown格式的文本
链接
对于QLabel
中的链接,默认行为为发射linkActivated()
信号,但也可以指定使用
QDesktopServices::openUrl()
在默认浏览器中打开链接。
注意textInteractionFlags
应该设置为LinksAccessibleByMouse
或LinksAccessibleByKeyboard
。
- .setOpenExternalLinks(open: bool)
- .openExternalLinks() -> bool
示例代码
本节对应示例代码如下,在已经正确安装 PySide6
的前提下可直接在本地运行:
import sys
from PySide6 import QtWidgets
from PySide6.QtCore import Qt
class MyWidget(QtWidgets.QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle("QLabel-文本格式、链接")
self.resize(800, 600)
self.label_1 = QtWidgets.QLabel(self)
self.label_2 = QtWidgets.QLabel(self)
self.setup_ui()
self.test_01()
self.test_02()
def setup_ui(self) -> None:
"""设置界面"""
label_1 = self.label_1
label_1.move(320, 200)
label_1.setText(
"<a href='https://github.com/muziing/PySide6-Code-Tutorial'>PySide6 Code Tutorial</a>"
)
label_2 = self.label_2
label_2.move(320, 230)
label_2.setText("**Markdown**")
def test_01(self) -> None:
"""测试文本格式功能"""
print(self.label_1.textFormat()) # 默认为 Qt.AutoText,所以可以识别富文本
self.label_2.setTextFormat(Qt.MarkdownText) # 设置为Qt.MarkdownText后即可被正确解析
def test_02(self) -> None:
"""测试链接功能"""
# 链接被点击时的默认行为是发射信号
self.label_1.linkActivated.connect(lambda val: print(val)) # type: ignore
# 也可以指定为使用默认浏览器打开,而不发射信号
# self.label_1.setOpenExternalLinks(True) # 点击链接则使用默认浏览器打开,不再发射信号
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MyWidget()
window.show()
sys.exit(app.exec())
关于 PySide6-Code-Tutorial
- 前身为已有近 500 Stars 的爆火教程 PyQt_practice
- 每个模块(.py文件)都可运行,展示了各种控件的各种功能属性作用,代码中有注释讲解
- 使用最新的 Python 与 PySide 版本(目前为3.10与6.3)
- 已经涵盖数十个常用控件,且仍在快速增加中
原版教程地址:https://github.com/muziing/PySide6-Code-Tutorial