wxPython 音を鳴らしてみる
wxPythonにwx.Soundクラスがあったので、音を鳴らしてみた。
メッセージを表示して音が繰り返し鳴るwindowを作ってみた。音声停止ボタンを押すと音が止まる。何か監視しておいて、異常があったときの警告画面に使える、と思う。
#!/usr/bin/env python #coding:utf-8 import wx class CtrlPanel(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, -1) self.parent = parent self.stopBtn = wx.Button(self, label=u"音声停止") self.quitBtn = wx.Button(self, label=u"閉じる") self.Bind(wx.EVT_BUTTON, self.OnStopBtn, self.stopBtn) self.Bind(wx.EVT_BUTTON, self.OnQuitBtn, self.quitBtn) sz = wx.BoxSizer() sz.Add(self.stopBtn,0) sz.AddStretchSpacer(1) sz.Add(self.quitBtn,0) self.SetSizer(sz) def OnQuitBtn(self, event): self.parent.Close() def OnStopBtn(self, event): self.parent.sound.Stop() class AlertWindow(wx.Frame): def __init__(self, msg): wx.Frame.__init__(self, None, -1, u"Sound", size=(400,200)) #for Windows XP #self.filename = r"C:\WINDOWS\Media\ringin" #for Ubuntu 10.04 #self.filename = '/usr/share/sounds/speech-dispatcher/test.wav' self.filename = '/usr/share/games/pinball/tux/loop.wav' self.sound = wx.Sound(self.filename) self.sound.Play(wx.SOUND_ASYNC|wx.SOUND_LOOP) cp = CtrlPanel(self) msgText = wx.TextCtrl(self, 1, msg, style=wx.TE_MULTILINE) sz = wx.BoxSizer(wx.VERTICAL) sz.Add(cp, 0, wx.EXPAND) sz.Add(msgText, 1, wx.EXPAND) self.SetSizer(sz) self.Show(True) if __name__ == '__main__': msg = u"wxPythonで音を鳴らします" app = wx.PySimpleApp() frame = AlertWindow(msg) app.MainLoop()