Wxpython键盘绑定
所以我正在开发一个节奏训练器,并使用wxpython作为UI工具包。我想知道是否有人知道如何绑定键盘按键来播放声音?所以简单地说,用户可以使用键盘来击鼓。示例“按A键将播放低音鼓” 现在我遇到了一个教程- 但这似乎需要按钮才能成功播放声音。使用这个例子,我已经有了一些功能。但是我想知道是否有另外一种不用按钮的方法Wxpython键盘绑定,python,wxpython,Python,Wxpython,所以我正在开发一个节奏训练器,并使用wxpython作为UI工具包。我想知道是否有人知道如何绑定键盘按键来播放声音?所以简单地说,用户可以使用键盘来击鼓。示例“按A键将播放低音鼓” 现在我遇到了一个教程- 但这似乎需要按钮才能成功播放声音。使用这个例子,我已经有了一些功能。但是我想知道是否有另外一种不用按钮的方法 import wx class MyForm(wx.Frame): def __init__(self): wx.Frame.__init__(self, None,
import wx
class MyForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Key Press Tutorial")
# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)
btn = wx.Button(panel, label="OK")
btn.Bind(wx.EVT_KEY_DOWN, self.onKeyPress)
def onKeyPress(self, event):
keycode = event.GetKeyCode()
print keycode
if keycode == ord('A'):
print "you pressed the spacebar!"
sound_file = "notation1.wav"
sound=wx.Sound(sound_file)
print(sound_file)
sound.Play(wx.SOUND_ASYNC)
event.Skip()
# Run the program
if __name__ == "__main__":
app = wx.PySimpleApp()
frame = MyForm()
frame.Show()
app.MainLoop()
这是我使用教程的示例
干杯 我的教程是关于在关注的小部件上捕捉击键。在本教程中,这是处于焦点的按钮,这就是它绑定到EVT_KEY_DOWN的原因。遗憾的是,面板并不很容易接受焦点,因此最好使用SetFocus()手动设置面板上的焦点,或者将关键事件绑定到大多数小部件 您可能可以使用AcceleratorTable,但我不确定这是否适用于您的情况。这里有一个关于该主题的教程链接:
将事件绑定到表单,而不是按钮
self.Bind(wx.EVT\u KEY\u DOWN,self.onKeyPress)
而不是btn.Bind(wx.EVT\u KEY\u DOWN,self.onKeyPress)
。这有帮助吗?嗯,它似乎什么都没做。我想当你在表单上时按下的键将由onKeyPress
方法处理。单击表单,然后按任意键查看是否调用了该方法。不,即使单击表单,也不会发生任何事情。这很奇怪,所以我根本没办法做我想做的事?除了用按钮绑定之外?看起来像是Panel.bind。当我把它绑定到按钮上时,我不会听到令人讨厌的系统声音。虽然声音不能同时播放。太棒了。我在wxPython邮件列表上看到一些线程,它们似乎暗示这并不总是有效的。不管怎样,我很高兴这帮你弄明白了!