返回

PyQt5基本窗口控件(三)QLabel

发布时间:2023-01-09 21:24:34 401
# python

(PyQt5基本窗口控件(三)QLabel)

三、QLabel(标签)

  • QLabel对象,作为一个占位符可以显示不可编辑的文本或图片,是其他控件的提示标记,即标签。
  • QObject-----------        |      QPaintDevice------              |            QWidget-------                  |                QFrame--------                      |                      ------QLabel

1、QLabel类中的常用方法

  • 如下表: 

2、QLabel类中的常用信号

  • 如下表:
信号 描述
linkActivated 当单击标签中嵌入的超链接,希望在新窗口打开时,setOpenExternalLinks特性必须为True
linkHovercd 当鼠标指针滑过标签中嵌入的超链接时,需要用槽函数与这个信号进行绑定
  • 案例
# -*- coding:utf-8 -*-
"""
    # @Time:2022/12/8 0008 11:44
    # @Author:晚秋拾叶
    # @File:qt04_QLabel.py
    # Python之PyCharm    
"""

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

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.yellow)
        label1.setPalette(palette)
        label1.setAlignment(Qt.AlignCenter)

        label2.setText("欢迎使用Python GUI应用")

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

        label4.setText(""
                       "欢迎朝兮暮兮的编程空间")
        label4.setAlignment(Qt.AlignRight)
        label4.setToolTip('这是一个超链接标签')

        # 2 在窗口布局中添加控件
        vbox = QVBoxLayout()
        vbox.addWidget(label1)
        vbox.addStretch()       # addStretch()函数用于在控件按钮间增加伸缩量
        vbox.addWidget(label2)
        vbox.addStretch()
        vbox.addWidget(label3)
        vbox.addStretch()
        vbox.addWidget(label4)

        # 3 允许label1控件访问超链接
        label4.setOpenExternalLinks(True)  # 默认值False,想要访问就写True

        # 点击文本框绑定槽事件
        label4.linkActivated.connect(self.link_clicked)
        label1.setTextInteractionFlags(Qt.TextSelectableByMouse)

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

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

    def link_clicked(self):
        print("当鼠标点击label4标签时,触发事件。")
if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = WindowDemo()
    win.show()
    sys.exit(app.exec_())
    
  • 代码分析
    • 设置文本标签居中显示

        label.setAlignment(Qt.AlignCenter)
      
    • 打开外部链接 定义网址链接并标注文字说明,再打开setOpenExternalLinks()的参数为True,再根据触发,调用槽函数link_clicked(),不过这里不带“()”。

label4 = QLabel(self)

label4.setText("欢迎朝兮暮兮的编程空间")
# 3 允许label1控件访问超链接
label4.setOpenExternalLinks(True)  # 默认值False,想要访问就写True

# 点击文本框绑定槽事件
label4.linkActivated.connect(self.link_clicked)
     
  • 效果如图

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

# -*- coding:utf-8 -*-
"""
    # @Time:2022/12/8 0008 13:01
    # @Author:晚秋拾叶
    # @File:qt04_QLabel_setBuddy.py
    # @PyCharm之Python
"""
from PyQt5.QtWidgets import  *
import sys

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

        self.setWindowTitle("QLabel例子")
        nameLbl1 = QLabel('&Name', self)
        nameEdl1 = QLineEdit(self)
        nameLbl1.setBuddy(nameEdl1)

        nameLbl2 = QLabel('&Password', self)
        nameEbl2 = QLineEdit(self)
        nameLbl2.setBuddy(nameEbl2)
        
        btnOk = QPushButton('&OK')
        btnCancel = QPushButton('&Cancel')
        mainLayout = QGridLayout(self)
        mainLayout.addWidget(nameLbl1, 0, 0)
        mainLayout.addWidget(nameEdl1, 0, 1, 1, 2)
        mainLayout.addWidget(nameLbl2, 1, 0)
        mainLayout.addWidget(nameEbl2, 1, 1, 1, 2)
        mainLayout.addWidget(btnOk, 2, 1)
        mainLayout.addWidget(btnCancel, 2, 2)

    def link_hovered(self):
        print("当鼠标滑过label2标签时,触发事件。")
    def link_clicked(self):
        print("当鼠标点击label4标签时,触发事件。")
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    labelDemo = QlabelDemo()
    labelDemo.show()
    sys.exit(app.exec_())
  • 代码分析
    • 在弹出的窗口中,按“Alt+N”快捷键可以切换到第一个文本框,因为这个文本框与QLabel进行了关联。再按“Alt+P”又切换到了第二文本框,道理一样。
  • 效果如图
  •  
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
PyQt5基本窗口控件(二)QWidget 2023-01-09 20:36:06