Pyside6-第八篇-QLabel文本标签

本篇是Pyside6的第八篇,本章来看看另一个知识点。

文本标签QLabel。它不仅仅可以用于文本,还可以显示富文本和图像。它是一个多功能的小部件,可以根据需要显示不同类型的内容。

部分源码

class QLabel(QFrame):
    """
    QLabel(self, parent: Optional[PySide6.QtWidgets.QWidget] = None, f: PySide6.QtCore.Qt.WindowType = Default(Qt.WindowFlags)) -> None
    QLabel(self, text: str, parent: Optional[PySide6.QtWidgets.QWidget] = None, f: PySide6.QtCore.Qt.WindowType = Default(Qt.WindowFlags)) -> None
    """

很明显,有两种方式创建,跟之前的按钮类似。

from PySide6.QtWidgets import QApplication,QWidget,QLabel


class Label(QWidget):
    def __init__(self):
        super(Label, self).__init__()
        self.UI()
        self.setWindowTitle("QLabel")
        self.setGeometry(200,200,500,300)

    def UI(self):
        label_ = QLabel(self)
        label_.setText("账号")
        label_.setGeometry(100,100,30,30)
        label_1 = QLabel("密码",self)
        label_1.setGeometry(100, 140, 30, 30)
        self.show()

if __name__ == '__main__':
    app = QApplication([])
    label = Label()
    app.exec()
Pyside6-第八篇-QLabel文本标签_第1张图片

好了,基础的玩意介绍完毕,接下来就是正题了。

对齐方式

为什么这里要讲,因为后面很多时候都会用到。

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

垂直对齐:
Qt.AlignTop       与顶部对齐
Qt.AlignBottom    与底部对齐
Qt.AlignVCenter   在可用空间中垂直居中
Qt.AlignBaseline  与基线对齐
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QWidget, QLabel

class Label(QWidget):
    def __init__(self):
        super(Label, self).__init__()
        self.UI()
        self.setWindowTitle("QLabel")
        self.setGeometry(200, 200, 500, 300)

    def UI(self):
        label_ = QLabel(self)
        label_.setText("账号")
        label_.setGeometry(100, 100, 70, 30)
        label_.setAlignment(Qt.AlignLeft)
        label_.setStyleSheet("background-color: #D7C0AE")

        label_1 = QLabel("密码", self)
        label_1.setGeometry(100, 140, 70, 30)
        label_1.setAlignment(Qt.AlignRight)
        label_1.setStyleSheet("background-color: #EEE3CB")
        self.show()

if __name__ == '__main__':
    app = QApplication([])
    label = Label()
    app.exec()
Pyside6-第八篇-QLabel文本标签_第2张图片

上述中使用了setStyleSheet设置样式,后续也会讲到,这里暂做了了解,知道background-color是用来设置背景颜色的。

设置文本格式

官方其实弄了很多的格式,这里就不搞什么虚的了,介绍一下不常用中的常用的。

from PySide6.QtWidgets import QApplication, QWidget, QLabel


class Label(QWidget):
    def __init__(self):
        super(Label, self).__init__()
        self.UI()
        self.setWindowTitle("QLabel")
        self.setGeometry(200, 200, 500, 300)

    def UI(self):
        label_ = QLabel(self)
        label_.setText("我的博客 CSDN-清安无别事公众号  测个der")
        label_.setGeometry(100, 100, 160, 70)
        label_.setWordWrap(True)        # 设置自动换行
        self.show()

if __name__ == '__main__':
    app = QApplication([])
    label = Label()
    app.exec()
Pyside6-第八篇-QLabel文本标签_第3张图片

图标

from PySide6.QtGui import QPixmap
from PySide6.QtWidgets import QApplication, QWidget, QLabel

class Label(QWidget):
    def __init__(self):
        super(Label, self).__init__()
        self.UI()
        self.setWindowTitle("QLabel")
        self.setGeometry(200, 200, 500, 300)

    def UI(self):
        label_ = QLabel(self)
        pix = QPixmap('close.png')
        pix_size = pix.scaled(30, 30)     # 设置图标大小
        label_.setPixmap(pix_size)  # 显示的图像
        label_.setGeometry(100, 100, 30, 30)

        self.show()

if __name__ == '__main__':
    app = QApplication([])
    label = Label()
    app.exec()

在后续的开发过程中,也可以使用QLbel来作为一个衬托图,使用QSS来设置QLabel的背景图,进而制作UI,也不会将QLabel局限于用来左一个文本标签。

Pyside6-第八篇-QLabel文本标签_第4张图片

如上图所示,红色区域就是一个QLbel标签,使用了setStyleSheet的border-image或者background-image来设置背景图。

快捷键与信号槽

它本身是没有内置的信号与槽的。但是可以与其他小部件或信号进行交互

链接点击事件(linkActivated):当用户点击QLabel上的链接时触发该信号。

链接悬停事件(linkHovered):当鼠标悬停在QLabel上的链接上时触发该信号。
from PySide6.QtGui import QShortcut, QKeySequence
from PySide6.QtWidgets import QApplication, QWidget, QLabel

class Label(QWidget):
    def __init__(self):
        super(Label, self).__init__()
        self.UI()
        self.setWindowTitle("QLabel")
        self.setGeometry(200, 200, 500, 300)

    def UI(self):
        label_ = QLabel(self)
        label_.setText("我的Pyside6代码笔记")
        shortcut  = QShortcut(QKeySequence("Ctrl+o"), label_)          # z设置CTRL+o为快捷键
        label_.setGeometry(100, 100, 200, 30)

        label_.linkHovered.connect(self.labelTest1)     # 当鼠标悬停在QLabel上的链接上时触发该信号。
        label_.linkActivated.connect(self.labelTest2)     # 当用户点击QLabel上的链接时触发该信号。
        shortcut.activated.connect(self.labelTest3)     # 设置快捷键的信号与槽

        self.label_1 = QLabel(self)
        self.label_1.setGeometry(140, 140, 200, 30)

        self.show()

    def labelTest1(self, txt):
        self.label_1.setText(txt)

    def labelTest2(self):
        self.label_1.setStyleSheet("background-color: #EEE3CB")

    def labelTest3(self):
        self.label_1.setStyleSheet("background-color: #9BABB8")

if __name__ == '__main__':
    app = QApplication([])
    label = Label()
    app.exec()

如果你需要上述图片中的登录界面源码,那么就去:

https://gitee.com/qinganan_admin/pyqt5-case-study/tree/master/%E7%99%BB%E5%BD%95%E7%95%8C%E9%9D%A2

最后,本章的代码在:

https://gitee.com/qinganan_admin/Pyside6_Information/tree/master/%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%8CQLabel

你可能感兴趣的:(qt,ui,开发语言)