【发布时间】:2020-12-18 17:14:41
【问题描述】:
我有一个显示矩形图像的 QLabel。图片的四角应该剪成圆形。
我使用 PyQt5,但不知道该怎么做。我试图设置一个画家并绘制一个圆形矩形,但它显示在我的图像之上。 我需要一些帮助。
【问题讨论】:
我有一个显示矩形图像的 QLabel。图片的四角应该剪成圆形。
我使用 PyQt5,但不知道该怎么做。我试图设置一个画家并绘制一个圆形矩形,但它显示在我的图像之上。 我需要一些帮助。
【问题讨论】:
这是执行此操作的一种方法。这是通过使用原始像素图作为画家的画笔在最初透明的像素图上绘制圆角矩形来实现的。
label = QtWidgets.QLabel()
# original
pixmap = QtGui.QPixmap('example.jpg')
radius = 30
# create empty pixmap of same size as original
rounded = QtGui.QPixmap(pixmap.size())
rounded.fill(QtGui.QColor("transparent"))
# draw rounded rect on new pixmap using original pixmap as brush
painter = QtGui.QPainter(rounded)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setBrush(QtGui.QBrush(pixmap))
painter.setPen(QtCore.Qt.NoPen)
painter.drawRoundedRect(pixmap.rect(), radius, radius)
# set pixmap of label
label.setPixmap(rounded)
【讨论】:
这是一个使用 Qt 样式表在 QLabel 中显示圆形图像的示例。
from PyQt5.QtWidgets import QApplication, QLabel
app = QApplication([])
label=QLabel("\n\
QLable StyleSheet Demo \n\
QLable StyleSheet Demo \n\
QLable StyleSheet Demo \n\
QLable StyleSheet Demo \n\
QLable StyleSheet Demo \n\
QLable StyleSheet Demo \n\
")
label.setStyleSheet(" \
border-image: url('demo.jpg'); \
background-color: black; \
border-radius: 50%; \
")
label.setMargin(20);
label.setScaledContents(True);
label.show()
app.exec_()
这是它的样子:
【讨论】: