在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_())
运行结果:
