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
QMediaPlayer
que 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.