• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PySide6-控件教程-001-QLabel标签控件-文本对齐、缩进、换行

武飞扬头像
muzing_
帮助1

QLabel 标签控件

标签控件用于在界面上显示文字、图像等

官方文档:https://doc.qt.io/qtforpython/PySide6/QtWidgets/QLabel.html

继承自 QFrame

有两种构造函数,可以传入文本、父控件、Qt.WindowFlags(一般不用)三个参数:

  • __init__(self, parent: Optional[QtWidgets.QWidget] = None, f: Qt.WindowFlags = Default(Qt.WindowFlags))
  • __init__(self, text: str, parent: Optional[QtWidgets.QWidget] = None, f: Qt.WindowFlags = Default(Qt.WindowFlags))

QLabel 的大小会根据其内容自动调整,也可以手动指定

文本对齐

.setAlignment(Qt.Alignment) 设置文本对齐方式,详见下方Qt.Alignment

.alignment() -> Qt.Alignment 获取文本对齐方式

默认对齐方式为 Qt.AlignLeft | Qt.AlignVCenter,即水平靠左、垂直居中对齐

Qt.AlignmentFlag 中又分为水平对齐方式与垂直对齐方式,具体有如下数种:
https://doc.qt.io/qt-6/qt.html#AlignmentFlag-enum

水平对齐:

  • Qt.AlignLeft 与左边缘对齐
  • Qt.AlignRight 与右边缘对齐
  • Qt.AlignHCenter 在可用空间中水平居中
  • Qt.AlignJustify 两端对齐(尽可能使文字占满横向空间)

垂直对齐:

  • Qt.AlignTop 与顶部对齐
  • Qt.AlignBottom 与底部对齐
  • Qt.AlignVCenter 在可用空间中垂直居中
  • Qt.AlignBaseline 与基线对齐

若需同时设置水平、垂直两个维度的对齐方式,只需将两个Flags用或运算符连接,例如:
Qt.AlignCenter 等价于 Qt.AlignVCenter | Qt.AlignHCenter

缩进

.setIndent(indent: int) 设置缩进,默认为-1,即不进行缩进
.indent() -> int 获取缩进数

缩进的方向与对齐方向有关,Qt.AlignLeft则缩进出现在左边缘,Qt.AlignTop则出现在上边缘,以此类推

如果 indent 为负数,或者没有设置缩进,则label计算有效缩进的方法如下:
若 frameWidth() 为0,则有效缩进变为0;若 frameWidth() 大于0,则有效缩进为控件当前 font()
x 字母宽度的一半

换行

QLabel 可以开启自动换行功能,即在需要时从单词之间换行

  • .setWordWrap(on: bool) 设置是否开启自动换行,默认关闭
  • .wordWrap() -> bool 获取是否开启自动换行

示例代码

本节对应示例代码如下,在已经正确安装 PySide6 的前提下可直接在本地运行:

# https://github.com/muziing/PySide6-Code-Tutorial
import sys

from PySide6 import QtWidgets
from PySide6.QtCore import Qt


description = """QLabel is used for displaying text or an image. No user interaction functionality is provided.
The visual appearance of the label can be configured in various ways,
and it can be used for specifying a focus mnemonic key for another widget."""


class MyWidget(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setWindowTitle("QLabel-文本操作")
        self.resize(800, 600)
        self.setup_ui()

    def setup_ui(self) -> None:
        """设置界面与测试功能"""
        label = QtWidgets.QLabel(self)
        # 手动设置尺寸,而非由内容自动设置
        label.resize(300, 300)
        label.move((self.width() - label.width()) // 2, (self.height() - label.height()) // 2)
        label.setStyleSheet("background-color: cyan;")

        # 注意测试以下三种功能时,会相互影响。
        # 如改变对齐方式会改变缩进方向、开启自动换行时每一行都会受到缩进影响等。

        # ==========测试对齐方式============
        label.setText("PySide6 Code Tutorial")  # 建议测试对齐方式功能时使用这个短内容文本
        # label.setAlignment(Qt.AlignTop)  # 上对齐
        # label.setAlignment(Qt.AlignJustify)  # 两侧对齐

        # label.setAlignment(Qt.AlignCenter)  # 居中对齐,等价于下一行
        label.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)  # 居中对齐

        # =========测试缩进=================
        # label.setText(description)
        # label.setIndent(30)  # 设置缩进,缩进方向对对齐方向相关
        print(label.indent())

        # =========测试自动换行=============
        # label.setText(description)
        label.setWordWrap(True)  # 若关闭自动换行,则超出单行的部分无法显示
        print(label.wordWrap())


# https://github.com/muziing/PySide6-Code-Tutorial
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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcaffj
系列文章
更多 icon
同类精品
更多 icon
继续加载