QLabel对象作为一个占位符可以显示不可编辑的文本或图片,也可以防止一个GIF动画,还可以被用作提示标记为其他控件。纯文本、链接或富文本可以显示在标签上。
QLabel是界面中的标签类,它继承自QFrame类。QLabel类的继承结构如下:
QObject <—— QPaintDevice <—— QWidget <—— QFrame <—— QLabel
QLabel类中的常用方法:
setAlignment() 按固定值方式对齐文本:
Qt.AlignLeft, 水平方向靠左对齐
Qt.AlignRight,水平方向靠右对齐
Qt.AlignCenter,水平方向居中对齐
Qt.AlignJustify,水平方向调整间距两端对齐
Qt.AlignTop,垂直方向靠上对齐
Qt.AlignBottom,垂直方向靠下对齐
Qt.AlignVCenter,垂直方向居中对齐
setIndent() 设置文本缩进值
setPixmap() 设置QLabel的文本内容
text() 获得QLabel的文本内容
setText() 设置QLabel的文本内容
selectedText() 返回所选择的字符
setBuddy() 设置QLabel的助记符及buddy(伙伴),即使用QLable设置快捷键,会在快捷键后将焦点设置到其buddy上,这里用到了QLabel的交互控件功能。此外,buddy可以是任何一个Widget控件。使用setBuddy(QWidget*)设置,其QLabel必须是文本内容,并且使用“&”符号设置了助记符
setWordWrap() 设置是否允许换行
QLabel类中的常用信号:
linkActivated 当单击标签中嵌入的超链接,希望在新窗口中打开这个超链接时,setOPenExternallLinks特性必须设置为true
linkHovered 当鼠标指针滑过标签中嵌入的超链接时,需要用槽函数与这个信号进行绑定
案例7 显示QLabel标签
import sys from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout from PyQt5.QtCore import Qt from PyQt5.QtGui import QPixmap, QPalette 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.blue) label1.setPalette(palette) label1.setAlignment(Qt.AlignCenter) # 设置文本标签居中显示 label2.setText("<a href='#'>欢迎使用 Python GUI 应用</a>") label3.setAlignment(Qt.AlignCenter) label3.setToolTip("这是一个图片标签") label3.setPixmap(QPixmap("./images/python.jpg")) label4.setText("<a href='http://www.cnblogs.com/wangshuo1/'>欢迎访问信平的小屋</a>") label4.setAlignment(Qt.AlignCenter) label4.setToolTip("这是一个超链接标签") # 2. 在窗口布局中添加控件 vbox = QVBoxLayout() vbox.addWidget(label1) vbox.addStretch() vbox.addWidget(label2) vbox.addStretch() vbox.addWidget(label3) vbox.addStretch() vbox.addWidget(label4) # 3. 允许label1控件访问超链接 label1.setOpenExternalLinks(True) # 打开允许访问超链接,默认是不允许,需要使用setOpenExternalLinks(True)允许浏览器访问超链接 label4.setOpenExternalLinks(False) # 点击文本框绑定槽事件 label4.linkActivated.connect(self.link_clicked) # 滑过文本框绑定槽事件 label2.linkHovered.connect(self.link_hovered) label1.setTextInteractionFlags(Qt.TextSelectableByMouse) self.setLayout(vbox) self.setWindowTitle("QLabel 例子") def link_clicked(self): print("当鼠标点击label-4标签时,触发事件。") def link_hovered(self): print("当鼠标滑过label-2标签时,触发事件。") if __name__ == "__main__": app = QApplication(sys.argv) win = WindowDemo() win.show() sys.exit(app.exec_())
案例8 QLabel标签快捷键的使用
import sys from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QGridLayout, QDialog, QLineEdit, QPushButton from PyQt5.QtCore import Qt from PyQt5.QtGui import QPixmap, QPalette 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") mainLayoout = QGridLayout(self) mainLayoout.addWidget(nameLb1, 0, 0) mainLayoout.addWidget(nameEd1, 0, 1, 1, 2) mainLayoout.addWidget(nameLb2, 1, 0) mainLayoout.addWidget(nameEd2, 1, 1, 1, 2) mainLayoout.addWidget(btnOK, 2, 1) mainLayoout.addWidget(btnCancel, 2, 2) if __name__ == "__main__": app = QApplication(sys.argv) labelDemo = QLabelDemo() labelDemo.show() sys.exit(app.exec_())