PyQt:QLabel在Python里的详细用法

本文将介绍PyQt5中的QLabel部件在Python下的详细用法;并介绍了一些QLabel部件常用的属性和方法,以及信号、槽的使用;

官方文档(C++语言描述):https://doc.qt.io/qt-5/qlabel.html

QLabel 部件用于文本或图像的显示;

该部件位于PyQt5.QtWidgets库中,要使用QLabel,需从PyQt5.QtWidgets中导入;

from PyQt5.QtWidgets import QLabel

或者导入 PyQt5.QtWidgets 中的所有部件:

from PyQt5.QtWidgets import *

用法示例:

from PyQt5.QtWidgets import *
app = QApplication([])
label = QLabel('Hello World!')
label.show()
app.exec_()

上述代码简单的展示了QLabel的创建过程。

QLabel() 将返回一个QLabel实例;第一个参数为显示的字符串(可省缺),第二个参数为父部件(可缺省);

下文中的 label 为 QLabel的实例;

使用setText()方法设置 QLabel 的文本 :

label.setText("perfcode.com")

使用text()方法读取 QLabel 的文本:

label.text()

QLabel 部件支持HTML语言标签,意味着你可以为QLabel部件设置这样的文本:

label.setText("<a href='https://www.perfcode.com' style='color:blue'>完美代码</a>")

效果如下:

qlabel

这个时候点击QLabel中的超文本链接还不具备打开网页的效果,你还需要使用setOpenExternalLinks()方法让 QLabel 允许访问超级链接:

label.setOpenExternalLinks(True)

现在你点击QLabel上的超级链接,将打开网页;

使用setAlignment()方法设置 QLabel 的文本对其方法:

from PyQt5.QtCore import Qt

label.setAlignment(Qt.AlignCenter)#居中对齐
label.setAlignment(Qt.AlignLeft)#左对齐
label.setAlignment(Qt.AlignRight)#右对齐

Qt 这个对象在PyQt5.QtCore库中,要使用需先导入这个库;

你可以使用setWordWrap()方法设置是否允许 QLabel 换行:

from PyQt5.QtCore import Qt

label.setAlignment(Qt.AlignCenter)#水平方向居中对齐
label.setAlignment(Qt.AlignLeft)#水平方向左对齐
label.setAlignment(Qt.AlignRight)#水平方向右对齐
label.setAlignment(Qt.AlignJustify)#水平方向两端对齐
label.setAlignment(Qt.AlignTop)#垂直方向向上对齐
label.setAlignment(Qt.AlignBottom)#垂直方向向下对齐
label.setAlignment(Qt.AlignVCenter)#垂直方向居中对齐

你可以使用 setPixmap() 方法来为 QLabel 设置图片或图标:

label.setWordWrap(True)

你需要用到 QPixmap 部件,QPixmap 部件在 PyQt5.QtGui 库中;

QLabel 信号与槽

这里介绍两种信号,以及如何绑定槽函数:

#槽函数
def link_hovered():
    print("光标浮动到超级连接上显示此信息")

#槽函数
def link_clicked():
    print("单击超级链接时显示此信息")

#绑定槽函数
label.linkHovered.connect(link_hovered) 
label.linkActivated.connect(link_clicked)

需要注意的是,当使用setOpenExternalLinks()方法设置 QLabel 允许打开超级链接时,linkActivated 信号无效。

完整示例代码:

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys

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

        #实例化 QLabel部件
        self.label=QLabel(self)

        #设置函数有HTML标签的文本
        self.label.setText("<a href='https://www.perfcode.com' style='color:blue'>完美代码</a>")

        #显示文本信息
        print(self.label.text())

        #设置对齐方式
        self.label.setAlignment(Qt.AlignCenter)

        #允许访问超文本链接
        self.label.setOpenExternalLinks(True) #允许访问超链接

        #绑定槽函数
        self.label.linkHovered.connect(self.link_hovered)
        self.label.linkActivated.connect(self.link_clicked)

        self.vbox=QVBoxLayout()
        self.setLayout(self.vbox)
        self.vbox.addWidget(self.label)
        self.vbox.addStretch()

    def link_hovered(self):
        print("光标浮动到超级连接上显示此信息")
    def link_clicked(self):
        print("单击超级链接时显示此信息")

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

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/pyqt-qlabel.html

分类: 计算机技术
推荐阅读:
Python sorted()函数 在 Python 中,sorted() 函数用于对序列进行排序。它可以接受多种类型的输入序列,包括列表、元组、集合和字典等。
Implementation of the USB 2.0 controller not found!解决方案 你可能在使用VirtualBox启动虚拟机系统时碰到“不能为虚拟电脑打开一个新的任务”的错误提示,并提示 Implementation of the USB 2.0 controller not found!
cannot fallthrough final case in switch的解决方法 在Go语言中,fallthrough 用于 switch 语句的 case 块中,它将会在当前 case 块执行完后执行下一个 case 块,不论下个 case 块条件是否匹配,但如果 fallthrough 后没有 case ,则会产生 cannot fallthrough final case in switch 的错误。
Golang中的数组切片 数组切片和数组在Go语言中不是同一种数据类型,但他们很相似,区别是数组只能是固定长度,而数组切片可灵活的改变长度。
MIPS处理器的基本特性和体系结构 MIPS处理器的基本特性和体系结构包括以下方面:
一条命令下载整个网站 在Linux系统下,你可以通过一条命令来下载整个网站,并按照网站的目录结构生成对应的文件夹及网页文件: