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

分类: 计算机技术
推荐阅读:
Linux显示使用内存最多的十个进程 在Linux系统下,你可以使用一条命令显示当前系统使用内存最多的十个进程:
Python pdb调试器详细教程 在Python可使用一个叫pdb的模块用于调试代码;pdb模块为Python程序定义了一个交互式的源代码调试器,你可通过它设置断点、逐行执行、堆栈检查等等常用调试功能;
1400多万个弱口令密码字典下载 该密码字典包含1400多万个密码,包含弱密码、常用密码、短密码等组合,适合暴力猜解使用;该文件来源于Kali系统下的密码字典文件;
PyQt:使用QVBoxLayout实现垂直布局 所谓的布局,你可以理解为窗口上控件(部件)的排版方式;使用 Layout 进行布局,窗口上的部件能随窗口大小的变化而变化;在本文中,你将掌握在Python中使用 QVBoxLayout 来进行垂直布局;
MySQL ADDDATE() 函数 ADDDATE()函数用于将一个时间值增加到一个日期当中;通俗的讲,就是可以通过这个函数将一个日期增加多少天;
TypeError: __format__ must return a str, not NoneType 在 Python 中,如__format__()方法必须返回一个字符串,否则将触发类似TypeError: __format__ must return a str, not NoneType的错误;