'PyQt5 Media Player Corrupts video

I tried making a PyQt5 custom media player that opens plays one specific video and print the coordinates of the mouse when left clicking.

class Window(QWidget): def init(self): super().init()

    user32 = ctypes.windll.user32
    user32.SetProcessDPIAware()

    self.setWindowTitle("Media Player")
    self.setGeometry(350, 100, 700, 500)
    self.setWindowIcon(QIcon('eye_icon.png'))

    p = self.palette()
    p.setColor(QPalette.Window, Qt.black)
    self.setPalette(p)
    self.init_ui()

def init_ui(self):
    # Create a Media Player Object
    self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
    self.mediaPlayer.mediaStatusChanged.connect(self.statusChanged)
    # Create a Video Widget Object
    self.videowidget = QVideoWidget()


    # Create Play Button
    self.playBtn = QPushButton()

    self.playBtn.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay))
    self.playBtn.clicked.connect(self.play_video)

    # Create Hbox Layout
    hboxLayout = QHBoxLayout()
    hboxLayout.setContentsMargins(0, 0, 0, 0)

    # Set Widgets to the Hbox layout
    hboxLayout.addWidget(self.playBtn)


    # Create Vbox Layout
    vboxLayout = QVBoxLayout()
    vboxLayout.addWidget(self.videowidget)
    vboxLayout.addLayout(hboxLayout)
    self.setLayout(vboxLayout)
    self.mediaPlayer.setVideoOutput(self.videowidget)
    # Media Player Signals

    self.mediaPlayer.stateChanged.connect(self.mediastate_changed)
    self.hidden = True

def mousePressEvent(self, event):
    if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
        if event.button() == Qt.LeftButton:
            x, y = pyautogui.position()
            a = (x, y)                                                                 
            print(a)




def statusChanged(self, status):
    if status == QMediaPlayer.EndOfMedia:
        if self.filename.endswith('.mp4') or self.filename.endswith('.flv') or self.filename.endswith('.mov') \
                or self.filename.endswith('.wmv') or self.filename.endswith('.avi') or self.filename.endswith(
                '.mkv'):
            print("End of video")
        else:
            self.playBtn.setEnabled(False)


def hide_unhide(self):
    if self.hidden:
        self.playBtn.show()
        self.hidden = False
    else:
        self.playBtn.hide()
        self.hidden = True



def play_video(self):
    if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
            self.mediaPlayer.pause()
    else:
            self.filename = 'Black_Video_3.mp4'
            global filepath
            filepath = self.filename
            self.playBtn.hide()

            if self.filename != '':
                self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile(self.filename)))
                self.mediaPlayer.play()
                self.playBtn.setEnabled(False)



def mediastate_changed(self, state):
    if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
        self.playBtn.setIcon(
            self.style().standardIcon(QStyle.SP_MediaPause)
        )
    else:
        self.playBtn.setIcon(
            self.style().standardIcon(QStyle.SP_MediaPlay)
        )

def set_position(self, position):
    self.mediaPlayer.setPosition(position)

def handle_errors(self):
    self.playBtn.setEnabled(False)
    self.label.setText("Error:" + self.mediaPlayer.errorString())

def statusChanged(self, status):
    if status == QMediaPlayer.EndOfMedia:
        if self.filename.endswith('.mp4') or self.filename.endswith('.flv') or self.filename.endswith('.mov') \
                or self.filename.endswith('.wmv') or self.filename.endswith('.avi') or self.filename.endswith(
                '.mkv'):
            print("Bye")
            sys.exit()
        else:
            self.playBtn.setEnabled(False)                                                   

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

Problem is that the video on the left down side of the screen looks like the frame is broken kind of like a puzzle. Like the image is moving a little up and down at that side of the screen and it is really annoying. This happens especially in Full Screen. Any ideas what I am doing wrong?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source