예제 #1
0
class RText(QObject):
    def __init__(self, text, x, y, size, color):
        self._pos = QPointF(x - 1.8, y + 1.8)
        super().__init__()
        self.text = QGraphicsTextItem(text)
        transform = QTransform.fromScale(0.3, -0.3)
        self.text.setTransformOriginPoint(self._pos)
        self.text.setTransform(transform)
        self.text.setPos(self._pos)
        # self.text.setRotation(-180)
        font = QFont("Times", 2)
        self.text.setFont(font)

        self._visible = 1

    @pyqtProperty(int)
    def visible(self):
        return self._visible

    @visible.setter
    def visible(self, value):
        if value > 0:
            self.text.show()
        else:
            self.text.hide()
        self._visible = value
예제 #2
0
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.view = VideoGraphicsView()
        self.setCentralWidget(self.view)

        self.view.videoItem.nativeSizeChanged.connect(
            self.handle_native_size_changed)

        url = QUrl(
            "https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4"
        )
        self.view.player.setMedia(QMediaContent(url))
        self.view.player.play()

        self.resize(640, 480)

        self.text_item = QGraphicsTextItem(self.view.videoItem)
        self.text_item.setHtml(
            """<div style="color: #41CD52; font-weight: bold; font-size: 20px;">Qt is awesome</div>"""
        )
        self.text_item.hide()

        self.animation = QVariantAnimation()
        self.animation.setDuration(1000)
        self.animation.setStartValue(QPointF(0.0, 0.0))
        self.animation.setEndValue(QPointF(0.0, 0.0))
        self.animation.valueChanged.connect(self.text_item.setPos)
        self.animation.finished.connect(self.start_of_start_animation)

    def handle_native_size_changed(self):
        self.start_of_start_animation()

    def start_of_start_animation(self):
        w = self.view.videoItem.size().width() - self.text_item.boundingRect(
        ).width()
        h = self.view.videoItem.size().height() - self.text_item.boundingRect(
        ).height()
        end_pos_x = random.uniform(0, w)
        end_pos_y = random.uniform(0, h)
        self.animation.setStartValue(self.animation.endValue())
        self.animation.setEndValue(QPointF(end_pos_x, end_pos_y))
        self.text_item.show()
        self.animation.start()