PyQt5 向 QMediaPlayer 发送信号
PyQt5 sending a signal to QMediaPlayer
自学 PyQt5,我想编写一个程序来播放在网站上找到的视频 link。由于 QT Designer 没有视频小部件,我不得不找到别人写的我自己的,并将其导入到我的程序中。可以找到我正在导入的完整代码 HERE。此视频小部件 window 是第二个 window,它会在选择视频后打开。
我想做的是在播放列表索引更改时更改视频 window 的标题。似乎我应该能够做到这一点:self.playlist.currentIndexChanged.connect(self.dialog.setWindowTitle('Changed!'))
但我遇到的问题是因为我正在导入打开视频小部件的 class/code,我不知道如何观看信号。
这是我的函数:
def play_all_replays(self):
"""
creates a QMediaPlaylist object and inserts all the games replays (in order) to the playlist
and then plays it.
:return:
"""
self.dialog = videowidget.VideoPlayer() # this is the video player widget I import
self.playlist = QMediaPlaylist() # the playlist
self.dialog.mediaPlayer.setPlaylist(self.playlist) #mediaplay is the QMediaPlayer created in videowidget()
for v in self.single_game_highlights_ordered:
url = QUrl(v)
self.playlist.addMedia(QMediaContent(url))
self.dialog.mediaPlayer.setPlaylist(self.playlist)
self.playlist.setCurrentIndex(0)
self.dialog.mediaPlayer.play()
self.dialog.setWindowTitle('MLB Replay - {}')
self.dialog.show()
self.playlist.currentIndexChanged.connect(self.dialog.setWindowTitle('Changed!'))
所以我有点迷路了。我如何观察这个信号变化,然后将它传递到我导入的视频小部件,这样我就可以更改 window 标题(或其他东西,比如我想启用 "next" 按钮如果是播放列表,或者播放列表中第一个视频播放后的 "previous" 按钮)?
这是解决方案。将函数的最后一行更改为:
self.playlist.currentIndexChanged.connect(self.playlist_changed)
然后调用这个函数:
def playlist_changed(self):
num = self.playlist.currentIndex() # gets current playlist index
self.dialog.setWindowTitle('MLB Replay - {}'.format(self.replay_window.item(num).text()))
自学 PyQt5,我想编写一个程序来播放在网站上找到的视频 link。由于 QT Designer 没有视频小部件,我不得不找到别人写的我自己的,并将其导入到我的程序中。可以找到我正在导入的完整代码 HERE。此视频小部件 window 是第二个 window,它会在选择视频后打开。
我想做的是在播放列表索引更改时更改视频 window 的标题。似乎我应该能够做到这一点:self.playlist.currentIndexChanged.connect(self.dialog.setWindowTitle('Changed!'))
但我遇到的问题是因为我正在导入打开视频小部件的 class/code,我不知道如何观看信号。
这是我的函数:
def play_all_replays(self):
"""
creates a QMediaPlaylist object and inserts all the games replays (in order) to the playlist
and then plays it.
:return:
"""
self.dialog = videowidget.VideoPlayer() # this is the video player widget I import
self.playlist = QMediaPlaylist() # the playlist
self.dialog.mediaPlayer.setPlaylist(self.playlist) #mediaplay is the QMediaPlayer created in videowidget()
for v in self.single_game_highlights_ordered:
url = QUrl(v)
self.playlist.addMedia(QMediaContent(url))
self.dialog.mediaPlayer.setPlaylist(self.playlist)
self.playlist.setCurrentIndex(0)
self.dialog.mediaPlayer.play()
self.dialog.setWindowTitle('MLB Replay - {}')
self.dialog.show()
self.playlist.currentIndexChanged.connect(self.dialog.setWindowTitle('Changed!'))
所以我有点迷路了。我如何观察这个信号变化,然后将它传递到我导入的视频小部件,这样我就可以更改 window 标题(或其他东西,比如我想启用 "next" 按钮如果是播放列表,或者播放列表中第一个视频播放后的 "previous" 按钮)?
这是解决方案。将函数的最后一行更改为:
self.playlist.currentIndexChanged.connect(self.playlist_changed)
然后调用这个函数:
def playlist_changed(self):
num = self.playlist.currentIndex() # gets current playlist index
self.dialog.setWindowTitle('MLB Replay - {}'.format(self.replay_window.item(num).text()))