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中的超文本链接还不具备打开网页的效果,你还需要使用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_())