QLabel

QLabel对象作为一个占位符可以显示不可编辑的文本或图片,也可以防止一个GIF动画,还可以被用作提示标记为其他控件。纯文本、链接或富文本可以显示在标签上。

QLabel是界面中的标签类,它继承自QFrame类。QLabel类的继承结构如下:

QObject <—— QPaintDevice <—— QWidget <—— QFrame <—— QLabel

QLabel类中的常用方法

  setAlignment()           按固定值方式对齐文本:

              Qt.AlignLeft, 水平方向靠左对齐

              Qt.AlignRight,水平方向靠右对齐

              Qt.AlignCenter,水平方向居中对齐

                                         Qt.AlignJustify,水平方向调整间距两端对齐

                                         Qt.AlignTop,垂直方向靠上对齐

                                         Qt.AlignBottom,垂直方向靠下对齐

                                         Qt.AlignVCenter,垂直方向居中对齐

  setIndent()                 设置文本缩进值

  setPixmap()               设置QLabel的文本内容

  text()                          获得QLabel的文本内容

  setText()                    设置QLabel的文本内容

  selectedText()            返回所选择的字符

  setBuddy()                设置QLabel的助记符及buddy(伙伴),即使用QLable设置快捷键,会在快捷键后将焦点设置到其buddy上,这里用到了QLabel的交互控件功能。此外,buddy可以是任何一个Widget控件。使用setBuddy(QWidget*)设置,其QLabel必须是文本内容,并且使用“&”符号设置了助记符

  setWordWrap()         设置是否允许换行

QLabel类中的常用信号

linkActivated                   当单击标签中嵌入的超链接,希望在新窗口中打开这个超链接时,setOPenExternallLinks特性必须设置为true

linkHovered                    当鼠标指针滑过标签中嵌入的超链接时,需要用槽函数与这个信号进行绑定

案例7  显示QLabel标签

 

import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QPalette


class WindowDemo(QWidget):
    def __init__(self):
        super().__init__()

        label1 = QLabel(self)
        label2 = QLabel(self)
        label3 = QLabel(self)
        label4 = QLabel(self)

        # 1. 初始化标签控件
        label1.setText("这是一个文本标签")
        label1.setAutoFillBackground(True)
        palette = QPalette()
        palette.setColor(QPalette.Window, Qt.blue)
        label1.setPalette(palette)
        label1.setAlignment(Qt.AlignCenter)  # 设置文本标签居中显示

        label2.setText("<a href='#'>欢迎使用 Python GUI 应用</a>")

        label3.setAlignment(Qt.AlignCenter)
        label3.setToolTip("这是一个图片标签")
        label3.setPixmap(QPixmap("./images/python.jpg"))

        label4.setText("<a href='http://www.cnblogs.com/wangshuo1/'>欢迎访问信平的小屋</a>")
        label4.setAlignment(Qt.AlignCenter)
        label4.setToolTip("这是一个超链接标签")

        # 2. 在窗口布局中添加控件
        vbox = QVBoxLayout()
        vbox.addWidget(label1)
        vbox.addStretch()
        vbox.addWidget(label2)
        vbox.addStretch()
        vbox.addWidget(label3)
        vbox.addStretch()
        vbox.addWidget(label4)

        # 3. 允许label1控件访问超链接
        label1.setOpenExternalLinks(True)
        # 打开允许访问超链接,默认是不允许,需要使用setOpenExternalLinks(True)允许浏览器访问超链接
        label4.setOpenExternalLinks(False)
        # 点击文本框绑定槽事件
        label4.linkActivated.connect(self.link_clicked)

        # 滑过文本框绑定槽事件
        label2.linkHovered.connect(self.link_hovered)
        label1.setTextInteractionFlags(Qt.TextSelectableByMouse)

        self.setLayout(vbox)
        self.setWindowTitle("QLabel 例子")

    def link_clicked(self):
        print("当鼠标点击label-4标签时,触发事件。")

    def link_hovered(self):
        print("当鼠标滑过label-2标签时,触发事件。")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = WindowDemo()
    win.show()
    sys.exit(app.exec_())

案例8 QLabel标签快捷键的使用

import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QGridLayout, QDialog, QLineEdit, QPushButton
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QPalette


class QLabelDemo(QDialog):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QLabel 例子")
        nameLb1 = QLabel("&Name", self)  # 设置了快捷键方式
        nameEd1 = QLineEdit(self)
        nameLb1.setBuddy(nameEd1)

        nameLb2 = QLabel("&Password", self)
        nameEd2 = QLineEdit(self)
        nameLb2.setBuddy(nameEd2)

        btnOK = QPushButton("&OK")
        btnCancel = QPushButton("&Cancel")
        mainLayoout = QGridLayout(self)
        mainLayoout.addWidget(nameLb1, 0, 0)
        mainLayoout.addWidget(nameEd1, 0, 1, 1, 2)

        mainLayoout.addWidget(nameLb2, 1, 0)
        mainLayoout.addWidget(nameEd2, 1, 1, 1, 2)

        mainLayoout.addWidget(btnOK, 2, 1)
        mainLayoout.addWidget(btnCancel, 2, 2)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    labelDemo = QLabelDemo()
    labelDemo.show()
    sys.exit(app.exec_())

 

posted @ 2020-07-29 17:53  Laney_Sun  阅读(507)  评论(0编辑  收藏  举报