QLabel 对象作为一个占位符可以显示不可编辑的文本或图片,也可以放置一个GIF动画,还可以被用作提示标记为其他控件。纯文本、链接或富文本可以显示在标签上。
QLabel类中常用的方法
setAlignment()
按固定值方式对齐文本
setIndent()
设置文本缩进值
setPixmap()
设置QLabel为一个Pixmap图片
text()
获得QLabel的文本内容
setText()
设置QLabel的文本内容
selectText()
返回所选择的字符
setBuddy()
设置QLabel的助记符及buddy(伙伴),即使用QLabel设置快捷键,会在快捷键后将焦点设置其buddy上,这里用到了QLabel的交互控件功能,此外,buddy可以是任何一个Widget控件。
setWordWrap()
设置是否运行换行
QLabel类中常用的信号
linkActived
当单击标记中嵌入的超链接,系统在新窗口中打开这个超链接,setOpenExternLinks特性必须设置为true
linkHovered
当鼠标指针滑过标签中嵌入的超链接时,需要用槽函数与这个信号进行绑定。
# -*- coding: utf-8 -*-
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)
# 初始化标签控件
label1.setText("这是一个文本标签。")
label1.setAutoFillBackground(True)
palette = QPalette()
palette.setColor(QPalette.Window, Qt.blue)
label1.setPalette(palette)
label1.setAlignment(Qt.AlignCenter)
label2.setText("欢迎使用Python 应用")
label3.setAlignment(Qt.AlignCenter)
label3.setToolTip("这是一个图片标签")
label3.setPixmap(QPixmap("./images/python.jpg"))
label4.setText("欢迎访问绝尘的博客")
label4.setAlignment(Qt.AlignRight)
label4.setToolTip("这是一个超链接标签")
vbox = QVBoxLayout()
vbox.addWidget(label1)
vbox.addStretch()
vbox.addWidget(label2)
vbox.addStretch()
vbox.addWidget(label3)
vbox.addStretch()
vbox.addWidget(label4)
# 允许label1访问超链接
label1.setOpenExternalLinks(True)
label4.setOpenExternalLinks(True)
label4.linkActivated.connect(link_clicked)
# 滑过文本框绑定槽事件
label2.linkHovered.connect(link_hovered)
label1.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.setLayout(vbox)
self.setWindowTitle("QLabel 例子")
def link_hovered():
print("当鼠标滑过label-2标签时,触发事件")
def link_clicked():
print("当鼠标点击label-4标签时,触发事件")
if __name__ == '__main__':
app = QApplication(sys.argv)
win = WindowDemo()
win.show()
sys.exit(app.exec_())
其中代码的部分设置文本标签居中显示
label1.setAlignment(Qt.AlignCenter)
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import *
import sys
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")
mainLayout = QGridLayout(self)
mainLayout.addWidget(nameLb1, 0, 0)
mainLayout.addWidget(nameEd1, 0, 1, 1, 2)
mainLayout.addWidget(nameLb2, 1, 0)
mainLayout.addWidget(nameEd2, 1, 1, 1, 2)
mainLayout.addWidget(btnOk, 2, 1)
mainLayout.addWidget(btnCancel, 2, 2)
if __name__ == '__main__':
app = QApplication(sys.argv)
labelDemo = QlabelDemo()
labelDemo.show()
sys.exit(app.exec_())
在弹出的窗口中,按Alt+N快捷键可以切换到第一个文本框。