ca838
Người Pháp ngớ ngẩn
Bài viết. 21
Chủ đề. 11
Đã tham gia. Tháng 2 năm 2017
Danh tiếng. 0
Mar-10-2022, 11. 06 giờ chiềuTôi đã tìm ra cách phát tệp và tôi đang sử dụng biểu mẫu PyQT5 do tôi tạo. Không có gì lạ mắt
Vì vậy, tôi muốn có thể cập nhật thông báo trạng thái thành trạng thái 'Đang chơi' trong khi. wav đang phát và sau đó khi hoàn thành 'Không phát'
Vấn đề tôi gặp phải là nếu tôi xóa lệnh thực để phát tệp thì nhãn sẽ được cập nhật trên biểu mẫu. Nhưng ngay sau khi tôi đặt lệnh để phát, nhãn sẽ không bao giờ được cập nhật
tên nhãn của tôi là lblstatus
Khi tệp được chọn từ listwidget và tôi nhấp vào nút phát, nó sẽ phát
Đây là mã của tôi, có gì sai với nó không?
import sounddevice as sd import soundfile as sf def _buttonplay[self, clicked]: global filename filename = self.lineEditsdir.text[] + '/' + self.listWidget.currentItem[].text[] print['Playing:' + filename] self.lblstatus.setStyleSheet["QLabel {background-color: rgb[255, 255, 0];color: rgb[0, 170, 0];}"] self.lblstatus.setText["Playing"] self.playwav[] self.lblstatus.setText["Not Playing"] self.lblstatus.setStyleSheet["QLabel {background-color: rgb[255, 255, 0];color: rgb[255, 0, 0];}"] def playwav[self]: data, fs = sf.read[filename,dtype='float32'] sd.play[data,fs] status = sd.wait[] returncảm ơn
SHIFT838
http. // ca838. 99er. mạng lưới
Telnet BBS
hợp nhất. ddns. mạng lưới. 9640
Hồi đáp
Trang web Tìm
Hồi đáp
cố vấn01
bàn chân khổng lồ
Bài viết. 791
Chủ đề. 94
Đã tham gia. Tháng 9 năm 2019
Danh tiếng. 70
Kiểm tra liên kết này về cách phát tệp wav pyqt5
Tôi hoan nghênh mọi phản hồi
Câu hỏi ngớ ngẩn duy nhất, là câu hỏi không được hỏi
tập lệnh của tôi
CookBook - Shmup - Trình phát nhạc PyQt5
Hồi đáp
Tìm thấy
Hồi đáp
ca838
Người Pháp ngớ ngẩn
Bài viết. 21
Chủ đề. 11
Đã tham gia. Tháng 2 năm 2017
Danh tiếng. 0
11-03-2022, 12. 07 giờ sángĐã xem liên kết của bạn và cố gắng triển khai cả phương pháp #1 và #3 nhưng tôi không nghe thấy âm thanh nào
Tôi đã thay đổi chức năng playwav bên dưới
def playwav[self]: filename = self.lineEditsdir.text[] + '/' + self.listWidget.currentItem[].text[] sound_file = filename sound = PyQt5.QtMultimedia.QSoundEffect[] sound.setSource[QtCore.QUrl.fromLocalFile[sound_file]] # sound.setLoopCount[QtMultimedia.QSoundEffect.Infinite] sound.setVolume[50] sound.play[]
SHIFT838
http. // ca838. 99er. mạng lưới
Telnet BBS
hợp nhất. ddns. mạng lưới. 9640
Hồi đáp
Trang web Tìm
Hồi đáp
ca838
Người Pháp ngớ ngẩn
Bài viết. 21
Chủ đề. 11
Đã tham gia. Tháng 2 năm 2017
Danh tiếng. 0
Mar-11-2022, 03. 35 giờ sángPhân tích cú pháp thông qua liên kết của bạn một lần nữa tôi đã đưa ra đoạn mã dưới đây. Các nút phát và dừng hoạt động bình thường
Tôi muốn tiếp tục tắt nút dừng cho đến khi tôi nhấn phát một tệp khi tệp phát xong. Tôi muốn nhãn đổi lại thành 'không phát' và nút dừng chuyển sang trạng thái tắt. Trong khi tệp đang phát, tôi muốn tắt nút phát
Nếu tôi đặt enable thành false trong hàm thì nó sẽ bị vô hiệu hóa ngay lập tức vì có vẻ như nó chạy hoàn toàn qua mã
Vì vậy, trong ngắn hạn. Tôi muốn có thể chơi và dừng theo ý muốn nhưng khi nhấn các nút, nhãn sẽ thay đổi thành đang phát hoặc không phát trong khi đảm bảo nút dừng vẫn ở trạng thái chính xác hoặc chuyển sang trạng thái chính xác
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'PC28BITCAS.ui' # # Created by: PyQt5 UI code generator 5.15.6 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. import sys import os import time import glob import wave import contextlib from datetime import timedelta from os import path from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtMultimedia as M from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QFileDialog, QLineEdit class Ui_MainWindow[object]: def setupUi[self, MainWindow]: MainWindow.setObjectName["MainWindow"] MainWindow.resize[800, 600] self.centralwidget = QtWidgets.QWidget[MainWindow] self.centralwidget.setObjectName["centralwidget"] self.tabWidget = QtWidgets.QTabWidget[self.centralwidget] self.tabWidget.setGeometry[QtCore.QRect[10, 10, 781, 551]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[10] self.tabWidget.setFont[font] self.tabWidget.setObjectName["tabWidget"] self.tab = QtWidgets.QWidget[] self.tab.setObjectName["tab"] self.butplay = QtWidgets.QPushButton[self.tab] self.butplay.setEnabled[False] self.butplay.setGeometry[QtCore.QRect[90, 500, 75, 23]] self.butplay.setAutoDefault[False] self.butplay.setDefault[False] self.butplay.setFlat[False] self.butplay.setObjectName["butplay"] self.butstop = QtWidgets.QPushButton[self.tab] self.butstop.setEnabled[False] self.butstop.setGeometry[QtCore.QRect[260, 500, 75, 23]] self.butstop.setObjectName["butstop"] self.butrecord = QtWidgets.QPushButton[self.tab] self.butrecord.setGeometry[QtCore.QRect[410, 500, 75, 23]] self.butrecord.setObjectName["butrecord"] self.listWidget = QtWidgets.QListWidget[self.tab] self.listWidget.setGeometry[QtCore.QRect[10, 110, 411, 361]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[10] self.listWidget.setFont[font] self.listWidget.setAlternatingRowColors[True] self.listWidget.setModelColumn[0] self.listWidget.setSelectionRectVisible[True] self.listWidget.setObjectName["listWidget"] self.lineEditsdir = QtWidgets.QLineEdit[self.tab] self.lineEditsdir.setEnabled[False] self.lineEditsdir.setGeometry[QtCore.QRect[10, 30, 671, 31]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[10] self.lineEditsdir.setFont[font] self.lineEditsdir.setText[""] self.lineEditsdir.setObjectName["lineEditsdir"] self.butbrowse = QtWidgets.QPushButton[self.tab] self.butbrowse.setGeometry[QtCore.QRect[690, 30, 75, 31]] self.butbrowse.setObjectName["butbrowse"] self.lblcurrentpath = QtWidgets.QLabel[self.tab] self.lblcurrentpath.setGeometry[QtCore.QRect[10, 10, 151, 16]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[12] self.lblcurrentpath.setFont[font] self.lblcurrentpath.setObjectName["lblcurrentpath"] self.lblcurrentpath_2 = QtWidgets.QLabel[self.tab] self.lblcurrentpath_2.setGeometry[QtCore.QRect[460, 120, 41, 16]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[12] self.lblcurrentpath_2.setFont[font] self.lblcurrentpath_2.setObjectName["lblcurrentpath_2"] self.lblcurrentpath_3 = QtWidgets.QLabel[self.tab] self.lblcurrentpath_3.setGeometry[QtCore.QRect[430, 210, 81, 16]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[12] self.lblcurrentpath_3.setFont[font] self.lblcurrentpath_3.setObjectName["lblcurrentpath_3"] self.lineEditselected = QtWidgets.QLineEdit[self.tab] self.lineEditselected.setEnabled[False] self.lineEditselected.setGeometry[QtCore.QRect[500, 110, 271, 31]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[12] self.lineEditselected.setFont[font] self.lineEditselected.setObjectName["lineEditselected"] self.lineEditduration = QtWidgets.QLineEdit[self.tab] self.lineEditduration.setEnabled[False] self.lineEditduration.setGeometry[QtCore.QRect[500, 200, 271, 31]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[12] self.lineEditduration.setFont[font] self.lineEditduration.setObjectName["lineEditduration"] self.lblcurrentpath_4 = QtWidgets.QLabel[self.tab] self.lblcurrentpath_4.setGeometry[QtCore.QRect[10, 80, 201, 16]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[12] self.lblcurrentpath_4.setFont[font] self.lblcurrentpath_4.setObjectName["lblcurrentpath_4"] self.lblstatus = QtWidgets.QLabel[self.tab] self.lblstatus.setGeometry[QtCore.QRect[490, 310, 201, 20]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[16] self.lblstatus.setFont[font] self.lblstatus.setStyleSheet[""] self.lblstatus.setFrameShadow[QtWidgets.QFrame.Raised] self.lblstatus.setLineWidth[4] self.lblstatus.setAlignment[QtCore.Qt.AlignCenter] self.lblstatus.setObjectName["lblstatus"] self.tabWidget.addTab[self.tab, ""] self.tab_3 = QtWidgets.QWidget[] self.tab_3.setObjectName["tab_3"] self.lblsdir = QtWidgets.QLabel[self.tab_3] self.lblsdir.setGeometry[QtCore.QRect[30, 30, 231, 16]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[12] self.lblsdir.setFont[font] self.lblsdir.setObjectName["lblsdir"] self.qlesourcedir = QtWidgets.QLineEdit[self.tab_3] self.qlesourcedir.setGeometry[QtCore.QRect[280, 30, 431, 20]] font = QtGui.QFont[] font.setFamily["DAGGERSQUARE"] font.setPointSize[10] self.qlesourcedir.setFont[font] self.qlesourcedir.setObjectName["qlesourcedir"] self.butsdir = QtWidgets.QPushButton[self.tab_3] self.butsdir.setGeometry[QtCore.QRect[720, 20, 31, 31]] self.butsdir.setText[""] icon = QtGui.QIcon[] icon.addPixmap[QtGui.QPixmap["images/browse-2.png"], QtGui.QIcon.Normal, QtGui.QIcon.Off] self.butsdir.setIcon[icon] self.butsdir.setIconSize[QtCore.QSize[24, 24]] self.butsdir.setObjectName["butsdir"] self.butsavecfg = QtWidgets.QPushButton[self.tab_3] self.butsavecfg.setGeometry[QtCore.QRect[650, 412, 91, 91]] self.butsavecfg.setText[""] icon1 = QtGui.QIcon[] icon1.addPixmap[QtGui.QPixmap["images/save-icon.png"], QtGui.QIcon.Normal, QtGui.QIcon.Off] self.butsavecfg.setIcon[icon1] self.butsavecfg.setIconSize[QtCore.QSize[90, 90]] self.butsavecfg.setObjectName["butsavecfg"] self.tabWidget.addTab[self.tab_3, ""] self.tab_4 = QtWidgets.QWidget[] self.tab_4.setObjectName["tab_4"] self.label = QtWidgets.QLabel[self.tab_4] self.label.setGeometry[QtCore.QRect[80, 40, 611, 401]] self.label.setText[""] self.label.setPixmap[QtGui.QPixmap["images/logocassette-medium.png"]] self.label.setObjectName["label"] self.tabWidget.addTab[self.tab_4, ""] MainWindow.setCentralWidget[self.centralwidget] self.menubar = QtWidgets.QMenuBar[MainWindow] self.menubar.setGeometry[QtCore.QRect[0, 0, 800, 21]] self.menubar.setObjectName["menubar"] MainWindow.setMenuBar[self.menubar] self.statusbar = QtWidgets.QStatusBar[MainWindow] self.statusbar.setObjectName["statusbar"] MainWindow.setStatusBar[self.statusbar] self.retranslateUi[MainWindow] self.tabWidget.setCurrentIndex[0] QtCore.QMetaObject.connectSlotsByName[MainWindow] def retranslateUi[self, MainWindow]: _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle[_translate["MainWindow", "MainWindow"]] self.butplay.setText[_translate["MainWindow", "Play"]] self.butstop.setText[_translate["MainWindow", "Stop"]] self.butrecord.setText[_translate["MainWindow", "Record"]] self.listWidget.setSortingEnabled[True] self.butbrowse.setText[_translate["MainWindow", "Browse"]] self.lblcurrentpath.setText[_translate["MainWindow", "Current Folder: "]] self.lblcurrentpath_2.setText[_translate["MainWindow", "File:"]] self.lblcurrentpath_3.setText[_translate["MainWindow", "Duration:"]] self.lblcurrentpath_4.setText[_translate["MainWindow", "Select file to load below:"]] self.lblstatus.setText[_translate["MainWindow", "Not Playing"]] self.tabWidget.setTabText[self.tabWidget.indexOf[self.tab], _translate["MainWindow", "Cassete #1"]] self.lblsdir.setText[_translate["MainWindow", "RAW Wave Source Directory"]] self.tabWidget.setTabText[self.tabWidget.indexOf[self.tab_3], _translate["MainWindow", "Configuration"]] self.tabWidget.setTabText[self.tabWidget.indexOf[self.tab_4], _translate["MainWindow", "About"]] self.butplay.clicked.connect[self.play] self.butstop.clicked.connect[self.stop] self.butbrowse.clicked.connect[self._buttonbrowse] self.listWidget.currentItemChanged.connect[self._fileselected] def play[self]: self.url = QtCore.QUrl.fromLocalFile[self.lineEditsdir.text[] + '/' + self.listWidget.currentItem[].text[]] self.content = M.QMediaContent[self.url] self.player = M.QMediaPlayer[] self.player.setMedia[self.content] self.lblstatus.setStyleSheet["QLabel {background-color: rgb[255, 255, 0];color: rgb[0, 170, 0];}"] self.lblstatus.setText["Playing"] self.butstop.setEnabled[True] self.player.play[] self.butstop.setEnabled[False] def stop[self]: self.player.stop[] self.lblstatus.setText["Not Playing"] self.lblstatus.setStyleSheet["QLabel {background-color: rgb[255, 255, 0];color: rgb[255, 0, 0];}"] def playreset[self]: self.lblstatus.setText["Not Playing"] self.lblstatus.setStyleSheet["QLabel {background-color: rgb[255, 255, 0];color: rgb[255, 0, 0];}"] def _buttonbrowse[self, clicked]: a = 0 folder = str[QFileDialog.getExistingDirectory[None, "Select Directory"]] self.lineEditsdir.setText[folder] os.chdir[folder] self.listWidget.clear[] for file in glob.glob["*.wav"]: self.listWidget.insertItem[a, file] def _fileselected[self,clicked]: self.lineEditselected.setText[self.listWidget.currentItem[].text[]] self.getwavduration[] self.butplay.setEnabled[True] def getwavduration[self]: fname = self.listWidget.currentItem[].text[] print[fname] with contextlib.closing[wave.open[fname, 'r']] as f: frames = f.getnframes[] rate = f.getframerate[] duration = frames / float[rate] # rounded = int[duration[round]] duration = round[duration] td = timedelta[seconds=duration] self.lineEditduration.setText[str[td]] if __name__ == "__main__": app = QtWidgets.QApplication[sys.argv] MainWindow = QtWidgets.QMainWindow[] ui = Ui_MainWindow[] ui.setupUi[MainWindow] ui.lblstatus.setStyleSheet["QLabel {background-color: rgb[255, 255, 0];color: rgb[255, 0, 0];}"] MainWindow.show[] sys.exit[app.exec_[]]
SHIFT838
http. // ca838. 99er. mạng lưới
Telnet BBS
hợp nhất. ddns. mạng lưới. 9640
Hồi đáp
Trang web Tìm
Hồi đáp
trưởng khoa
Cân nặng giống như một con vịt
Bài viết. 4.558
Chủ đề. 16
Đã tham gia. Tháng 2 năm 2020
Danh tiếng. 263
Mar-11-2022, 05. 15 giờ sángĐây không phải là nút vật lý. Tại sao có một nút dừng ở tất cả? . Và khi bạn nhấn nút dừng, nó sẽ quay lại phát. Điều đó chỉ còn lại việc đi đến cuối phương tiện và tự động chuyển từ Dừng sang Phát
Trình phát đa phương tiện có thể có tín hiệu thông báo cho chương trình khi trạng thái phương tiện thay đổi. Có lẽ vị trí đã thay đổi?
Hồi đáp
Tìm thấy
Hồi đáp
cố vấn01
bàn chân khổng lồ
Bài viết. 791
Chủ đề. 94
Đã tham gia. Tháng 9 năm 2019
Danh tiếng. 70
11-Mar-2022, 07. 58 PM [Bài đăng này đã được sửa đổi lần cuối. Mar-11-2022, 07. 58 PM by menator01. Chỉnh sửa lý do. Mã cập nhật ]Đây là một ví dụ đơn giản. thay thế old_car. tập tin wav
#! /usr/bin/env python3 import sys from PyQt5.QtWidgets import [QApplication, QLabel, QVBoxLayout, QWidget, QPushButton] from PyQt5 import QtCore from PyQt5.QtMultimedia import[QMediaPlayer, QMediaContent] def _play[]: player.play[] def state_changed[state]: if state == QMediaPlayer.PlayingState: text = 'Playing' color = 'green' else: text = 'Stopped' color = 'red' label.setText[f'{text}'] label.setStyleSheet[f'color:{color}'] if __name__ == '__main__': app = QApplication[[]] layout = QVBoxLayout[] file = 'old_car.wav' player = QMediaPlayer[] sound = QtCore.QUrl.fromLocalFile[file] player.setMedia[QMediaContent[sound]] label = QLabel['Stopped'] label.setStyleSheet['color:red;'] btn = QPushButton['Play'] btn.pressed.connect[_play] player.stateChanged.connect[state_changed] layout.addWidget[label] layout.addWidget[btn] widget = QWidget[] widget.setLayout[layout] widget.show[] sys.exit[app.exec[]]
Tôi hoan nghênh mọi phản hồi
Câu hỏi ngớ ngẩn duy nhất, là câu hỏi không được hỏi
tập lệnh của tôi
CookBook - Shmup - Trình phát nhạc PyQt5
Hồi đáp
Tìm thấy
Hồi đáp