1

I was wondering is there any way to get a custom sound to play as soon as a message dialog box comes up? my only restriction is that I can only use wxPython for this, for arguments sake lets call the sound file 'music.wav' Here is my code so far (ignore the stuff about playing with text, that was me creating a dummy GUI for it to load):

import wx
import time
import winsound, sys

class ButtonTest(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,None,id,'Button/Text test frame',size=(800,500))
        panel=wx.Panel(self)

        button=wx.Button(panel, label='Exit', pos=(200,50), size=(-1,-1))
        self.Bind(wx.EVT_BUTTON, self.closer, button)
        self.Bind(wx.EVT_CLOSE, self.wincloser)




        ape=wx.StaticText(panel, -1, 'This text is STATIC', (200,80))
        ape.SetFont(wx.Font(25, wx.SWISS, wx.ITALIC, wx.BOLD, True,'Times New Roman'))

        def beep(sound):
            winsound.PlaySound('%s.wav'%sound, winsound.SND_FILENAME)



        #wx.FutureCall(1000, beep('C:\Users\Chris\Desktop\music'))
        box=wx.MessageDialog(None,'Is this a good test?','Query:',wx.ICON_ERROR)

        answer=box.ShowModal()
        box.Destroy
        beep('C:\Users\Chris\Desktop\music')


    def closer(self,event):
        self.Close(True)

    def wincloser(self,event):
        self.Destroy()

if __name__=='__main__':

    app=wx.PySimpleApp()
    frame=ButtonTest(None,id=-1)
    frame.Show()
    app.MainLoop()

1 Answers1

0

For Windows, there's winsound, which is built in to Python. Otherwise, you'll need an external library like pyAudio or Snack Sound. See also Play a Sound with Python

Community
  • 1
  • 1
Mike Driscoll
  • 32,629
  • 8
  • 45
  • 88