首页 > 解决方案 > PyQT5视频的上下滑动效果

问题描述

我需要在 PyQt5 上为前景视频制作向下/向上滑动效果。类似的东西没有幻灯片效果。为什么?对于 QLabel,此代码运行良好,但对于 QVideoWidget 则不行。

我尝试用 move() 改变位置 - 一样。

class Window(QMainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()

        self.setObjectName("MainWindow")
        self.setWindowModality(QtCore.Qt.NonModal)
        self.resize(1920, 1080)
        self.setFixedWidth(1920)
        self.setFixedHeight(1080)
        self.setAutoFillBackground(False)
        self.setStyleSheet("background-color: rgb(255, 255, 255);")

        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.videoWidget = QVideoWidget(self)
        self.videoWidget.setGeometry(0,0, 1920, 1080)
        self.mediaPlayer.setVideoOutput(self.videoWidget)
        self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile('/video.mp4')))

        self.up_btn = QtWidgets.QPushButton(self)
        self.up_btn.setText('UP')
        self.up_btn.move(0,50)
        self.up_btn.clicked.connect(self.slide_up)

        self.up_btn = QtWidgets.QPushButton(self)
        self.up_btn.setText('DOWN')
        self.up_btn.clicked.connect(self.slide_down)

    def slide_up(self):
        self.mediaPlayer.stop()

        self.video_block_anim_up = QPropertyAnimation(self.videoWidget, b"pos")
        self.video_block_anim_up.setStartValue(1080)
        self.video_block_anim_up.setEndValue(0)
        self.video_block_anim_up.setDuration(300)
        self.video_block_anim_up.start()


    def slide_down(self):
        self.mediaPlayer.stop()
        self.video_block_anim = QPropertyAnimation(self.videoWidget, b"pos")
        self.video_block_anim.setStartValue(0)
        self.video_block_anim.setEndValue(1080)
        self.video_block_anim.setDuration(300)
        self.video_block_anim.start()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

标签: pythonpyqtpyqt5

解决方案


推荐阅读