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()

