Как мне применить радиус границы или иным образом добиться эффекта закругленного угла с помощью QMovie в PyQt5? Кажется, он не реагирует на QSS. Хотя я не считаю это актуальным, в любом случае, вот мой текущий код, чтобы дать представление о том, что я пробовал:
image = QLabel()
image.setObjectName("rant-image")
movie = QMovie("image_cache/" + img_name)
image.setMovie(movie)
movie.start()
с QSS:
QLabel#rant-image{
border-radius: 5px;
}
Я также пытался рисовать текущее растровое изображение для каждого события paintEvent, создавая подкласс QWidget, но ничего не появляется, а размер растрового изображения равен 0:
invisible_pen = QPen()
invisible_pen.setWidth(0)
invisible_pen.setStyle(Qt.NoPen)
class RoundedMovie(QWidget):
def __init__(self, movie, parent=None):
QWidget.__init__(self, parent)
self.movie = movie
def setMovie(self, movie):
self.movie = movie
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing, True)
pixmap = self.movie.currentPixmap()
brush = QBrush(pixmap)
rect = QRect(0, 0, pixmap.width() - 10, pixmap.height() - 10)
painter.setPen(invisible_pen)
painter.setBrush(brush)
painter.drawRoundedRect(rect, 5, 5)
Я также знаю, что приведенная выше реализация не будет работать, потому что paintEvent не будет происходить достаточно часто, чтобы воспроизвести фильм, как ожидалось.
w = QtWidgets.QLabel(alignment=QtCore.Qt.AlignCenter, scaledContents=True)
18.01.2019p.setRenderHint(QtGui.QPainter.Antialiasing)
послеp = QtGui.QPainter(pix)
18.01.2019