В чем различие между PyQt 6.4.2 и PyQt 6.7.1? Почему код, который корректно работал в старой версии, не запускается в новой?
Вот сам код:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout, QVBoxLayout, QStyle, QSlider, QFileDialog
from PyQt6.QtCore import Qt, QUrl
from PyQt6.QtMultimedia import QMediaPlayer, QAudioOutput
from PyQt6.QtMultimediaWidgets import QVideoWidget
class PyVideoPlayer(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(200, 200, 700, 400)
self.player = QMediaPlayer()
self.audio = QAudioOutput()
self.videowidget = QVideoWidget()
self.player.setVideoOutput(self.videowidget)
self.player.setAudioOutput(self.audio)
self.cur = False # текущее состояние ролика
self.load_UI()
def load_UI(self):
# диалог открытия и пауза
self.openBtn = QPushButton("Открыть")
self.openBtn.clicked.connect(self.open)
self.playBtn = QPushButton()
self.playBtn.setEnabled(False)
self.playBtn.setIcon(self.style().standardIcon(QStyle.StandardPixmap.SP_MediaPlay))
self.playBtn.clicked.connect(self.play)
# слайдер
self.slider = QSlider(Qt.Orientation.Horizontal)
self.slider.setRange(0, 0)
self.slider.sliderMoved.connect(self.set_position)
self.player.positionChanged.connect(self.position_changed)
self.player.durationChanged.connect(self.duration_changed)
# верстка
hbox = QHBoxLayout()
hbox.addWidget(self.openBtn)
hbox.addWidget(self.playBtn)
hbox.addWidget(self.slider)
vbox = QVBoxLayout()
vbox.addWidget(self.videowidget)
vbox.addLayout(hbox)
self.setLayout(vbox)
def open(self):
filename, _ = QFileDialog.getOpenFileName(self, "c:\", "", "Video files (*.mp4 *.mpeg *.mov *.avi)")
if filename != '':
self.player.setSource(QUrl.fromLocalFile(filename))
self.playBtn.setEnabled(True)
def play(self):
self.cur = True if not self.cur else False
if self.cur:
self.player.play()
else:
self.player.pause()
def position_changed(self, position):
self.slider.setValue(position)
def duration_changed(self, duration):
self.slider.setRange(0, duration)
def set_position(self, position):
self.player.setPosition(position)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = PyVideoPlayer()
ex.show()
sys.exit(app.exec())