class MainForm (QtGui.QMainWindow): def __init__ (self, parent = None): super(MainForm, self).__init__(parent) self.player = MediaPlayer() self.ui = Ui_PlayerControl() self.ui.setupUi(self) self.ui.btnPlay.clicked.connect(self.player.play) self.ui.btnStop.clicked.connect(self.player.stop) self.ui.btnPrev.clicked.connect(self.player.prev) self.ui.btnNext.clicked.connect(self.player.next) self.sliderScale = 1000 self.ui.sliderTime.setRange(0, self.sliderScale) self.ui.sliderTime.setValue(0) self.ui.sliderTime.sliderReleased.connect(self.onSliderReleased) self.ui.editTitle.setPlainText(self.player.getTitle()) self.updateTimer = QtCore.QTimer() updatesPerSecond = 1 self.updateTimer.setInterval(1000 / updatesPerSecond) self.updateTimer.timeout.connect(self.onTimer) self.updateTimer.start() def onTimer (self): if self.ui.sliderTime.isSliderDown(): return self.ui.editTitle.setPlainText(self.player.getTitle()) pos = 0 if not self.player.isStopped(): timeLeft = self.player.getTimeRemaining() timeTotal = self.player.getTimeTotal() if timeTotal != 0: pos = 1 - timeLeft * 1.0 / timeTotal self.ui.sliderTime.setSliderPosition(pos * self.sliderScale) def onSliderReleased (self): pos = self.ui.sliderTime.sliderPosition() * 1.0 / self.sliderScale self.player.seek(pos * self.player.getTimeTotal())