Pyside6-第八篇-QLabel文本标签

简介: 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()

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

对齐方式

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

水平对齐:
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()

上述中使用了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("<html><body>我的博客 <a href='https://blog.csdn.net/weixin_52040868'>CSDN-清安无别事</a><b>公众号 </b> <i>测个der</i></body></html>")
        label_.setGeometry(100, 100, 160, 70)
        label_.setWordWrap(True)        # 设置自动换行
        self.show()
if __name__ == '__main__':
    app = QApplication([])
    label = Label()
    app.exec()

图标

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局限于用来左一个文本标签。

如上图所示,红色区域就是一个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("<a href='https://gitee.com/qinganan_admin/Pyside6_Information'>我的Pyside6代码笔记</a>")
        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


目录
相关文章
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
797 0
Pyside6-第二篇-QPushButton一个普通按钮
Pyside6-第二篇-QPushButton一个普通按钮
271 0
Pyside6-第九篇-QTextEdit多行文本编辑器
Pyside6-第九篇-QTextEdit多行文本编辑器
400 0
PyQt5-QLabel控件是什么?方法有哪些?具体如何使用?
PyQt5-QLabel控件是什么?方法有哪些?具体如何使用?
70 0
21 QT - QLabel控件使用
21 QT - QLabel控件使用
67 0
Pyside6-第十一篇-QComboBox下拉列表
Pyside6-第十一篇-QComboBox下拉列表
751 0
|
开发工具
Pyside6-第十二篇-QSlider滑动条
Pyside6-第十二篇-QSlider滑动条
436 0
Pyside6-第五篇-单选按钮QRadioButton
Pyside6-第五篇-单选按钮QRadioButton
496 0
|
前端开发 C++
Qt界面美化之自定义qss样式表
Qt界面美化之自定义qss样式表