首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python wxPython 播放 WAV 音效:FileBrowseButton 選檔與 Sound 非同步播放

     編輯:更多程式設計知識

wxPython 提供原生 wx.Sound 播放 WAV,配合 wx.lib.filebrowsebutton.FileBrowseButton 可快速建立選檔播放小工具。

完整程式碼


import wx
import wx.lib.filebrowsebutton

class MyFrame(wx.Frame):
    def __init__(self, parent, title, size):
        wx.Frame.__init__(self, parent, wx.ID_ANY, title, size=size)
        self.SetBackgroundColour("green")
        panel = wx.Panel(self)

        self.fbb = wx.lib.filebrowsebutton.FileBrowseButton(
            panel, labelText="Select a WAVE file:", fileMask="*.wav")
        self.play_btn = wx.Button(panel, wx.ID_ANY, ">> Play")
        self.play_btn.Bind(wx.EVT_BUTTON, self.on_play)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(self.fbb, 1, wx.ALIGN_CENTER_VERTICAL)
        hsizer.Add(self.play_btn, 0, wx.ALIGN_CENTER_VERTICAL)
        border = wx.BoxSizer(wx.VERTICAL)
        border.Add(hsizer, 0, wx.EXPAND | wx.ALL, 10)
        panel.SetSizer(border)

    def on_play(self, evt):
        filename = self.fbb.GetValue()
        sound = wx.Sound(filename)
        if sound.IsOk():
            sound.Play(wx.SOUND_ASYNC)
        else:
            wx.MessageBox("Missing or invalid sound file", "Error")

app = wx.App(0)
MyFrame(None, "wx.lib.filebrowsebutton and wx.Sound", (600, 90)).Show()
app.MainLoop()

關鍵點

  • FileBrowseButton 整合 TextCtrl + FileDialog,fileMask 過濾副檔名。
  • wx.Sound(filename) 僅支援 WAV 格式(平台相關)。
  • Play(wx.SOUND_ASYNC) 非阻塞播放,wx.SOUND_SYNC 為阻塞。
  • IsOk() 檢查檔案是否有效載入。

適用場景

  • 桌面應用音效提示(通知、錯誤音)。
  • 簡易音訊播放器原型。
  • 測試 WAV 檔案完整性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved