- 8 Ocak 2011
- 103
- 46
Selam,
Hiç uzatmayayım ;
Hiç uzatmayayım ;
Python:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QFileDialog, QLabel, QSlider
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
from PyQt5.QtCore import Qt, QUrl, QTimer
class MP3Player(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Klamhat - MP3 Player')
self.setFixedSize(400, 300)
self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.StreamPlayback)
self.mediaPlayer.positionChanged.connect(self.updatePosition)
self.playButton = QPushButton('Play')
self.playButton.setStyleSheet("background-color: #4CAF50; color: white;")
self.playButton.clicked.connect(self.play)
self.pauseButton = QPushButton('Pause')
self.pauseButton.setStyleSheet("background-color: #f44336; color: white;")
self.pauseButton.clicked.connect(self.pause)
self.openButton = QPushButton('Open')
self.openButton.setStyleSheet("background-color: #008CBA; color: white;")
self.openButton.clicked.connect(self.openFile)
self.volumeLabel = QLabel('Volume')
self.volumeLabel.setAlignment(Qt.AlignCenter)
self.volumeLabel.setStyleSheet("font-size: 14px;")
self.volumeSlider = QSlider(Qt.Horizontal)
self.volumeSlider.setRange(0, 100)
self.volumeSlider.setValue(50)
self.volumeSlider.sliderMoved.connect(self.setVolume)
self.timeLabel = QLabel('00:00 / 00:00')
self.fileLabel = QLabel('No File Selected')
self.positionSlider = QSlider(Qt.Horizontal)
self.positionSlider.setRange(0, 0)
self.positionSlider.sliderMoved.connect(self.setPosition)
vbox = QVBoxLayout()
vbox.addWidget(self.fileLabel)
vbox.addWidget(self.playButton)
vbox.addWidget(self.pauseButton)
vbox.addWidget(self.openButton)
vbox.addWidget(self.volumeLabel)
vbox.addWidget(self.volumeSlider)
vbox.addWidget(self.timeLabel)
vbox.addWidget(self.positionSlider)
self.setLayout(vbox)
self.timer = QTimer(self)
self.timer.timeout.connect(self.updatePosition)
def play(self):
if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
self.mediaPlayer.setPosition(0)
else:
self.mediaPlayer.play()
self.timer.start(1000)
def pause(self):
self.mediaPlayer.pause()
self.timer.stop()
def openFile(self):
fileName, _ = QFileDialog.getOpenFileName(self, "Open MP3 File", "", "MP3 Files (*.mp3)")
if fileName != '':
self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile(fileName)))
self.play()
self.fileLabel.setText(fileName.split("/")[-1])
def setPosition(self, position):
self.mediaPlayer.setPosition(position)
def updatePosition(self):
position = self.mediaPlayer.position()
duration = self.mediaPlayer.duration()
self.positionSlider.blockSignals(True)
self.positionSlider.setValue(position)
self.positionSlider.setRange(0, duration)
self.positionSlider.blockSignals(False)
position_str = self.formatTime(position)
duration_str = self.formatTime(duration)
self.timeLabel.setText(f'{position_str} / {duration_str}')
def formatTime(self, millis):
seconds = millis // 1000
minutes = seconds // 60
seconds %= 60
return '{:02}:{:02}'.format(minutes, seconds)
def setVolume(self, volume):
self.mediaPlayer.setVolume(volume)
if __name__ == '__main__':
app = QApplication(sys.argv)
mp3player = MP3Player()
mp3player.show()
sys.exit(app.exec_())