QtMultimedia ile Müzik Çalar Yaptım Birkaç Sorun Yaşıyorum

from PyQt5.QtGui import *
from PyQt5.QtMultimedia import *
import sys

class Pencere(QWidget):
    şarkı_listesi = ["uslanmıyor-Zeynep Bastık", "Kurdish Mahsup", "MotorHead"]
    def __init__(self):
        super().__init__()

        self.setGeometry(300,100,600,600)
        self.setWindowTitle("Müzik Çalar")

        self.list = QListWidget(self)
        #self.list.addItem("uslanmıyor-Zeynep Bastık")
        #self.list.addItem("Kurdish Mahsup")
        #self.list.addItem("MotorHead")
        self.list.addItems(self.şarkı_listesi)
        self.list.setSelectionMode(QAbstractItemView.SingleSelection)

        self.sesLabel = QLabel(self)
        self.sesLabel.setText("SES : 0")
        self.sesLabel.setFont(QFont("Helvetica",18))
        self.slider = QSlider(Qt.Vertical,self)
        self.slider.setTickPosition((QSlider.TicksRight))
        self.slider.setMinimum(1)
        self.slider.setMaximum(100)
        self.slider.setSingleStep(2)

        sesliButonu = QPushButton(self)
        sesliButonu.setText("SESSİZDEN ÇIKAR")
        sessizButonu = QPushButton(self)
        sessizButonu.setText("SESSİZE AL")
        durdurButonu = QPushButton(self)
        durdurButonu.setText("DURDUR")
        durdurButonu.setFont(QFont("Helvetica",20,QFont.Bold))
        durdurButonu.setShortcut("SPACE")  # space tuşuyla müzik duruyor.
        başlatButonu = QPushButton(self)
        başlatButonu.setText("BAŞLAT")
        başlatButonu.setFont(QFont("Helvetica",20,QFont.Bold))
        bitirButonu = QPushButton(self)
        bitirButonu.setText("BİTİR")
        bitirButonu.setShortcut("esc")
        bitirButonu.setFont(QFont("Helvetica",20,QFont.Bold))
        şarkıEkleButonu = QPushButton(self)
        şarkıEkleButonu.setText("Şarkı Ekle")

        v_box = QVBoxLayout(self)
        h1_box = QHBoxLayout(self)
        h2_box = QHBoxLayout(self)
        h3_box = QHBoxLayout(self)

        h1_box.addWidget(self.slider)
        h1_box.addWidget(self.list)
        h2_box.addWidget(self.sesLabel)
        h2_box.addWidget(sesliButonu)
        h2_box.addWidget(sessizButonu)
        h2_box.addWidget(durdurButonu)
        h2_box.addWidget(başlatButonu)
        h3_box.addWidget(şarkıEkleButonu)
        h3_box.addWidget(bitirButonu)

        v_box.addLayout(h1_box)
        v_box.addLayout(h2_box)
        v_box.addLayout(h3_box)

        başlatButonu.clicked.connect(self.baslat)
        durdurButonu.clicked.connect(self.durdur)
        self.slider.valueChanged.connect(self.sesDegistir)
        sessizButonu.clicked.connect(self.sessizeAl)
        sesliButonu.clicked.connect(self.sessizdenCikar)
        bitirButonu.clicked.connect(self.close)
        şarkıEkleButonu.clicked.connect(self.sarkiEkle)

    def baslat(self):
        self.şarkı = self.list.currentItem().text()
        self.şarkı = self.şarkı + ".mp3"
        self.media_oluştur()
        self.media.play()

    def durdur(self):
        self.media.stop()
        x =  self.media.duration() # süreyi verir!

    def media_oluştur(self):
        self.media = QMediaPlayer(self)
        self.media.setMedia(QMediaContent(QUrl.fromLocalFile("C:/Users/Asus/Desktop/Müzikler/{}".format(self.şarkı))))
        self.media.setVolume(20)

    def sesDegistir(self):
        self.sesYaz()
        self.media.setVolume(int(self.slider.value()))

    def sesYaz(self):
        self.sesLabel.setText("SES : {}".format(self.slider.value()))

    def sessizeAl(self):
        self.media.setMuted(1)

    def sessizdenCikar(self):
        self.media.setMuted(0)

    def sarkiEkle(self):
        pass

app = QApplication(sys.argv)
window = Pencere()
window.show()
app.exec_()```
  • İlk sorum şu: Bir şarkıyı başlat butonu ile başlattıktan sonra tekrar başlat butonuna basınca önceden çalınan şarkı kapanmadan ikinci şarkı olarak baştan başlıyor.Bunu nasıl kontrol edebilirim?

  • İkinci sorum: def sarkiEkle(Self) fonksiyonu ile nasıl şarkı ekleyebilirim?

  • Üçüncü sorum: Bir şarkının süresini göstermek ve şarkıyı ileri geri sarmak istiyorum. Bunu nasıl yapabilirim?
    Yardımlarınızı bekliyorum.Şimdiden teşekkürler…

importlarınız eksik sanırım, bir sürü hata alıyorum.

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtMultimedia import *
import sys

class Pencere(QWidget):
    şarkı_listesi = ["uslanmıyor-Zeynep Bastık", "Kurdish Mahsup", "MotorHead"]
    def __init__(self):
        super().__init__()

        self.setGeometry(300,100,600,600)
        self.setWindowTitle("Müzik Çalar")

        self.list = QListWidget(self)
        #self.list.addItem("uslanmıyor-Zeynep Bastık")
        #self.list.addItem("Kurdish Mahsup")
        #self.list.addItem("MotorHead")
        self.list.addItems(self.şarkı_listesi)
        self.list.setSelectionMode(QAbstractItemView.SingleSelection)

        self.sesLabel = QLabel(self)
        self.sesLabel.setText("SES : 0")
        self.sesLabel.setFont(QFont("Helvetica",18))
        self.slider = QSlider(Qt.Vertical,self)
        self.slider.setTickPosition((QSlider.TicksRight))
        self.slider.setMinimum(1)
        self.slider.setMaximum(100)
        self.slider.setSingleStep(2)

        sesliButonu = QPushButton(self)
        sesliButonu.setText("SESSİZDEN ÇIKAR")
        sessizButonu = QPushButton(self)
        sessizButonu.setText("SESSİZE AL")
        durdurButonu = QPushButton(self)
        durdurButonu.setText("DURDUR")
        durdurButonu.setFont(QFont("Helvetica",20,QFont.Bold))
        durdurButonu.setShortcut("SPACE")  # space tuşuyla müzik duruyor.
        başlatButonu = QPushButton(self)
        başlatButonu.setText("BAŞLAT")
        başlatButonu.setFont(QFont("Helvetica",20,QFont.Bold))
        bitirButonu = QPushButton(self)
        bitirButonu.setText("BİTİR")
        bitirButonu.setShortcut("esc")
        bitirButonu.setFont(QFont("Helvetica",20,QFont.Bold))
        şarkıEkleButonu = QPushButton(self)
        şarkıEkleButonu.setText("Şarkı Ekle")

        v_box = QVBoxLayout(self)
        h1_box = QHBoxLayout(self)
        h2_box = QHBoxLayout(self)
        h3_box = QHBoxLayout(self)

        h1_box.addWidget(self.slider)
        h1_box.addWidget(self.list)
        h2_box.addWidget(self.sesLabel)
        h2_box.addWidget(sesliButonu)
        h2_box.addWidget(sessizButonu)
        h2_box.addWidget(durdurButonu)
        h2_box.addWidget(başlatButonu)
        h3_box.addWidget(şarkıEkleButonu)
        h3_box.addWidget(bitirButonu)

        v_box.addLayout(h1_box)
        v_box.addLayout(h2_box)
        v_box.addLayout(h3_box)

        başlatButonu.clicked.connect(self.baslat)
        durdurButonu.clicked.connect(self.durdur)
        self.slider.valueChanged.connect(self.sesDegistir)
        sessizButonu.clicked.connect(self.sessizeAl)
        sesliButonu.clicked.connect(self.sessizdenCikar)
        bitirButonu.clicked.connect(self.close)
        şarkıEkleButonu.clicked.connect(self.sarkiEkle)

    def baslat(self):
        self.şarkı = self.list.currentItem().text()
        self.şarkı = self.şarkı + ".mp3"
        self.media_oluştur()
        self.media.play()

    def durdur(self):
        self.media.stop()
        x =  self.media.duration() # süreyi verir!

    def media_oluştur(self):
        self.media = QMediaPlayer(self)
        self.media.setMedia(QMediaContent(QUrl.fromLocalFile("C:/Users/Asus/Desktop/Müzikler/{}".format(self.şarkı))))
        self.media.setVolume(20)

    def sesDegistir(self):
        self.sesYaz()
        self.media.setVolume(int(self.slider.value()))

    def sesYaz(self):
        self.sesLabel.setText("SES : {}".format(self.slider.value()))

    def sessizeAl(self):
        self.media.setMuted(1)

    def sessizdenCikar(self):
        self.media.setMuted(0)

    def sarkiEkle(self):
        pass

app = QApplication(sys.argv)
window = Pencere()
window.show()
app.exec_()

Aynen eksik atmışım. Şimdi attığım doğrusu…

stop metodu ile şarkıyı durdurabilirsiniz:

    def baslat(self):
        try:
            self.media.stop()
        except AttributeError:
            pass
        self.şarkı = self.list.currentItem().text()
        self.şarkı = self.şarkı + ".mp3"
        self.media_oluştur()
        self.media.play()

Şarkı eklemeden kastınız bilgisayarda bulunan bir şarkıyı seçmek mi?

Emin değilim ama position ile yapılıyor sanırım.
https://doc.qt.io/qtforpython/PySide2/QtMultimedia/QMediaPlayer.html#functions

Evet bilgisayardaki şarkıyı

Sorunuz cevapsız kalmış şimdi fark ettim. Şuradaki anlatımı takip edebilirsiniz:
https://www.tutorialspoint.com/pyqt/pyqt_qfiledialog_widget.htm