Un código de fuente para abrir, reproducir, pausar y detener un archivo de audio con Qt y su clase Phonon.
player.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# player.py
#
# Copyright 2013 Recursos Python - www.recursospython.com
#
import sys
from PyQt4.QtCore import QMetaObject
from PyQt4.QtGui import (QApplication, QFileDialog, QLabel, QMainWindow,
QPushButton)
from PyQt4.phonon import Phonon
class Window(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.resize(400, 300)
self.setWindowTitle("Reproductor de audio")
self.player = Phonon.createPlayer(Phonon.MusicCategory)
self.slider = Phonon.SeekSlider(self.player, self)
self.slider.setGeometry(10, 10, 380, 25)
self.play_button = QPushButton(self)
self.play_button.setText("Reproducir")
self.play_button.setGeometry(10, 50, 100, 25)
self.play_button.setObjectName("play_button")
self.pause_button = QPushButton(self)
self.pause_button.setText("Pausa")
self.pause_button.setGeometry(120, 50, 100, 25)
self.pause_button.setObjectName("pause_button")
self.stop_button = QPushButton(self)
self.stop_button.setText("Detener")
self.stop_button.setGeometry(230, 50, 100, 25)
self.stop_button.setObjectName("stop_button")
self.track_label = QLabel(self)
self.track_label.setText(
u"No se ha seleccionado ningún archivo."
)
self.track_label.setGeometry(10, 100, 340, 25)
self.track_label.setObjectName("track_label")
self.browse_button = QPushButton(self)
self.browse_button.setText("...")
self.browse_button.setGeometry(355, 100, 35, 25)
self.browse_button.setObjectName("browse_button")
QMetaObject.connectSlotsByName(self)
def on_play_button_pressed(self):
self.player.play()
def on_pause_button_pressed(self):
self.player.pause()
def on_stop_button_pressed(self):
self.player.stop()
def on_browse_button_released(self):
path = unicode(QFileDialog.getOpenFileName(self))
index = path.rfind("/")
self.player.setCurrentSource(Phonon.MediaSource(path))
self.track_label.setText(path[index + 1 if index > -1 else 0:])
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
Curso online 👨💻
¡Ya lanzamos el curso oficial de Recursos Python en Udemy!
Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter en 2024.
Consultoría 💡
Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.

bull3tpr00f says:
Genial, gracias.
Una cosa ¿qué formatos reproduce? parece que los .mid no los maneja…
Recursos Python says:
Hola, me alegro que te haya servido. En teoría, Phonon soporta todos los formatos de audio que tu sistema operativo, aunque no me extraña que no pueda reproducir archivos MIDI. Puedes probar con
QMediaPlayerque es algo más completo. Saliendo de lo que es la librería Qt, vas a encontrar muchas soluciones en Python que te permiten reproducir MIDI: PythonInMusic, como pygame.Saludos.