2016-03-22 17 views
0

自分自身でPyQt5を教えて、私はウェブサイト上にあるビデオリンクを再生するプログラムを書こうと思っていました。 QTデザイナーはビデオウィジェットを持っていなかったので、私は他の誰かが書いたものを見つけなければなりませんでした。私がインポートしているコード全体はHEREです。このビデオウィジェットウィンドウは、ビデオが選択された後に開く第2のウィンドウです。PyQt5がQMediaPlayerに信号を送る

再生リストのインデックスが変更されると、ビデオウィンドウのタイトルが変更されます。 self.playlist.currentIndexChanged.connect(self.dialog.setWindowTitle('Changed!'))でこれを行うことができると思われますが、ビデオウィジェットを開くクラス/コードをインポートしているので、私が抱えている問題は、信号を監視する方法を理解できません。ここで

は私の機能です:

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!')) 

だから私は一種のここに迷ってしまいました。この信号の変化を監視してから、私がインポートしたビデオウィジェットに渡して、ウィンドウのタイトル(またはプレイリストの場合は「次へ」ボタンを有効にするなどの他のもの)を変更することができます。プレイリストの最初のビデオが再生された後の「前の」ボタン)?

+1

いやはや、と私はそれを考え出したと思います。 'self.playlist.currentIndexChanged.connect'で' self.dialog.setWindowTitle( 'Changed!') 'を使うことはできません。代わりに私は信号を扱う関数を作成する必要がありました(私のプログラムでは他のすべてのシグナルと同じように)。そして 'setWindowTitle'をそこに置きます。そうすることで、それは動作します。疲れた目と頭脳。 – Bahnzo

+0

または: 'connect(lambda:self.dialog.setWindowTitle( 'Changed!'))' – ekhumoro

+0

あなた自身で問題を解決したので、あなたの質問を削除することを検討してください。将来の読者が恩恵を受けられると思うなら、あなた自身の答えを加えてください。 –

答えて

0

ここに解決策があります。その後、この関数を呼び出す

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())) 
関連する問題