在PyQt5中,
首先,我们使用一个完整的示例。显示QLabel的多种使用方法。
1.基础使用
1.1显示文本
label = QLabel('Hello, PyQt5!') label.show()
1.2设置字体和颜色
可以通过样式表(类似于CSS)来设置字体、大小和颜色。
label.setStyleSheet('color: blue; font-size: 20px; font-family: Arial;')
1.3文本对齐
通过
label.setAlignment(Qt.AlignCenter)
1.4显示图像
pixmap = QPixmap('path/to/image.png') label.setPixmap(pixmap)
1.5调整图像尺寸
可以通过调整
pixmap = pixmap.scaled(100, 100, Qt.KeepAspectRatio) label.setPixmap(pixmap)
2.交互功能
2.1响应点击事件
通过重写
class ClickableLabel(QLabel): def mousePressEvent(self, event): print("Label clicked!") label = ClickableLabel('Clickable Label')
2.2使用富文本
label.setText('<b>Bold Text</b> <i>Italic Text</i> <u>Underlined Text</u>')
2.3提示文本
为
label.setToolTip('This is a tooltip for QLabel')
3. 高级特性
3.1 自动换行
设置
label.setWordWrap(True)
3.2 背景和边框
通过样式表可以为
label.setStyleSheet('background-color: yellow; border: 1px solid black;')
3.3 事件过滤器
通过安装事件过滤器,可以让
class MyLabel(QLabel): def eventFilter(self, object, event): if event.type() == QEvent.MouseMove: print("Mouse move!") return super(MyLabel, self).eventFilter(object, event) label = MyLabel('Event Filter') label.installEventFilter(label)
4. 完整的示例
import sys from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow, QVBoxLayout, QWidget from PyQt5.QtGui import QPixmap from PyQt5.Qt import QEvent, Qt class ClickableLabel(QLabel): def mousePressEvent(self, event): print("Clickable Label clicked!") class MyLabel(QLabel): def eventFilter(self, object, event): if event.type() == QEvent.MouseMove: print("Mouse move over the label!") return super().eventFilter(object, event) class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('QLabel 示例') self.setGeometry(100, 100, 600, 400) layout = QVBoxLayout() # 基础文本标签 basicLabel = QLabel('Hello, PyQt5!') layout.addWidget(basicLabel) # 带样式的标签 styledLabel = QLabel('Styled Label') styledLabel.setStyleSheet('color: blue; font-size: 20px; font-family: Arial;') layout.addWidget(styledLabel) # 图片标签 pixmapLabel = QLabel() pixmap = QPixmap('path/to/image.png').scaled(100, 100, Qt.KeepAspectRatio) pixmapLabel.setPixmap(pixmap) layout.addWidget(pixmapLabel) # 可点击标签 clickableLabel = ClickableLabel('Clickable Label') layout.addWidget(clickableLabel) # 使用富文本的标签 richTextLabel = QLabel('<b>Bold Text</b> <i>Italic Text</i> <u>Underlined Text</u>') layout.addWidget(richTextLabel) # 自动换行的标签 wordWrapLabel = QLabel('This is a very long text that will wrap around the label.') wordWrapLabel.setWordWrap(True) layout.addWidget(wordWrapLabel) # 事件过滤器标签 eventFilterLabel = MyLabel('Event Filter Label') eventFilterLabel.installEventFilter(eventFilterLabel) layout.addWidget(eventFilterLabel) container = QWidget() container.setLayout(layout) self.setCentralWidget(container) if __name__ == '__main__': app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_())
运行结果: