Форум сайта python.su
0
Всем приветы!
Пытаю свои силы в Python хочу MP3 плеер забубенить выбор пал на python-vlc
Подсобите решить следующую проблему на PuQt сделал выбор папки с получением списка что в ней и по двойному клику выбирая файл запускается воспроизведение все ок, но вот беда если запустить вторую то первая не останавливается в воспроизведение а играет в фоне, и так сколько не запускаю все играют одновременно 


#функция воспроизведения def play(self): sel = self.listWidget.selectedIndexes()[0] files = (sel.data()) self.statusBar.showMessage(files) #тут воспроизводим выбранный файл files из выбранной directory player = vlc.MediaPlayer(directory+"/"+files) player.stop()#остановить преъидущее воспроизведение player.play()
import vlc import sys # sys нужен для передачи argv в QApplication import os # Отсюда нам понадобятся методы для отображения содержимого директорий from PyQt5 import QtWidgets import design # Это наш конвертированный файл дизайна class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow): def __init__(self): # Это здесь нужно для доступа к переменным, методам # и т.д. в файле design.py super().__init__() self.setupUi(self) # Это нужно для инициализации нашего дизайна self.btnBrowse.clicked.connect(self.browse_folder) # Выполнить функцию browse_folder # при нажатии кнопки self.listWidget.itemDoubleClicked.connect(self.play) #при двойном клике запустить функцию воспроизведения def browse_folder(self): global directory#объявляем переменную глобальной self.listWidget.clear() # На случай, если в списке уже есть элементы directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Выберите папку") # открыть диалог выбора директории и установить значение переменной # равной пути к выбранной директории if directory: # не продолжать выполнение, если пользователь не выбрал директорию for file_name in os.listdir(directory): # для каждого файла в директории self.listWidget.addItem(file_name) # добавить файл в listWidget #функция воспроизведения def play(self): sel = self.listWidget.selectedIndexes()[0] files = (sel.data()) self.statusBar.showMessage(files) #тут воспроизводим выбранный файл files из выбранной directory player = vlc.MediaPlayer(directory+"/"+files) player.stop()#остановить преъидущее воспроизведение player.play() def main(): app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication window = ExampleApp() # Создаём объект класса ExampleApp window.show() # Показываем окно app.exec_() # и запускаем приложение if __name__ == '__main__': # Если мы запускаем файл напрямую, а не импортируем main() # то запускаем функцию main()
Отредактировано seregka174 (Фев. 21, 2019 08:32:08)
Офлайн
568
Попробую предположить, что нужно как-то так
class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow): def __init__(self): super().__init__() self.player = None def play(self): sel = self.listWidget.selectedIndexes()[0] files = (sel.data()) self.statusBar.showMessage(files) if self.player: self.player.stop() self.player = vlc.MediaPlayer(directory+"/"+files) self.player.play()
Офлайн
0
FishHookПопробовал что то просто открывается маленькое пустое окошечко и все, а моего с выбором директории нет
Попробую предположить, что нужно как-то так
Отредактировано seregka174 (Фев. 21, 2019 09:17:08)
Офлайн
568
seregka174
Не трудно догадаться, что я вам дал не ПОЛНОСТЬЮ РАБОЧИЙ код, а показал места, в которых нужно сделать изменения. Одна строка новая появится у вас в __init__ и несколько в play.
Офлайн
0
FishHookSUPER !!!! Все работает, спасибо!
seregka174Не трудно догадаться, что я вам дал не ПОЛНОСТЬЮ РАБОЧИЙ код, а показал места, в которых нужно сделать изменения. Одна строка новая появится у вас в __init__ и несколько в play.
Офлайн
568
seregka174
А если не трудно можете написать (наводку что почитать) почему так происходило, заранее спасибо огроменное!

player = vlc.MediaPlayer(directory+"/"+files)
player.stop()
player.play()
Офлайн