PyQt5 Dersleri – Müzik Çalar ( QSlider, QComboBox ) QtMultimedia Kütüphanesi

Bulunduğu dizinde tüm .mp3 leri combobox ın içine listeler. Combobox içerisinden seçimle müzik çalar ses ayarı QSlider ile yapılabilir. İndirmek ve incelemek isterseniz İndir !

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

import sys
import os

class Pencere(QWidget):
    def __init__(self):
        super(Pencere, self).__init__()
        self.setUI()
        self.formSet()
        self.caliyor = False # Çalma devam ediyorsa QSlider hareket ederken sesLabel artsın yada azalsın.
        self.listeAl()

    def formSet(self):
        self.setAutoFillBackground(True)
        self.p = QPalette()
        self.p.setColor(self.backgroundRole(),Qt.gray)
        self.setPalette(self.p)

        self.setGeometry(1000,400,500,100)
        self.setWindowTitle("Müzik Çalar MP3")
        self.show()

    def setUI(self):
        # QLabel
        self.sesLabel = QLabel()
        self.sesLabel.setFont(QFont("Calibri",20,QFont.Bold))
        self.sesLabel.setAlignment(Qt.AlignHCenter)

        #QPushButton
        self.baslat = QPushButton()
        self.baslat.setIcon(QIcon("../PyQt5_Dersleri/icons/baslatButton.png"))
        self.baslat.clicked.connect(self.cal)
        self.durdur = QPushButton()
        self.durdur.setIcon(QIcon("../PyQt5_Dersleri/icons/durdurButton.png"))
        self.durdur.clicked.connect(self.dur)

        #QSlider
        self.sl = QSlider(Qt.Horizontal)
        self.sl.setTickPosition(QSlider.TicksBelow)
        self.sl.setRange(30,100)
        self.sl.setSingleStep(5)
        self.sl.setValue(0)
        self.sl.valueChanged.connect(self.sesAyar)

        #QHBoxLayout
        h_Box1 = QHBoxLayout()
        h_Box1.addWidget(self.sesLabel)
        h_Box2 = QHBoxLayout()
        h_Box2.addWidget(self.baslat)
        h_Box2.addWidget(self.durdur)

        #QVBoxLayout
        v_Box = QVBoxLayout()
        v_Box.addLayout(h_Box1)
        v_Box.addLayout(h_Box2)
        v_Box.addWidget(self.sl)

        # QComboBox
        self.cb = QComboBox()
        self.cb.currentTextChanged.connect(self.cal)
        v_Box.addWidget(self.cb)

        self.setLayout(v_Box)

    def cal(self):
        self.media = QMediaPlayer()
        self.media.setMedia(QMediaContent(QUrl.fromLocalFile("../PyQt5_Dersleri/" + self.cb.currentText())))

        self.caliyor = True
        self.media.play()

    def dur(self):
        self.caliyor = False
        self.media.stop()

    def sesAyar(self):
        if self.caliyor == True:
            self.sesLabel.setText(str(self.sl.value()))
            self.media.setVolume(int(self.sl.value()))

    def listeAl(self):
        for x in os.listdir():
            if x[len(x)-3::] == "mp3":
                self.cb.addItem(x)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    pencere = Pencere()
    sys.exit(app.exec())