• 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_())
  • 相关阅读:
    hdoj5327【前缀和思想】
    codeforces 611C
    codeforces 632C
    poj1163 【记忆化搜索·水】
    2016 Multi-University Training Contest 2 A Acperience
    细剖最短路【闲谈,权当是饭后杂文】
    poj1724【最短路】
    [YY题]HDOJ5288 OO’s Sequence
    Codeforces Round #363 (Div. 2) C. Vacations
    POJ2105【进制转化】
  • 原文地址:https://www.cnblogs.com/lynsha/p/13398599.html
Copyright © 2020-2023  润新知