我具有此绑定“ self.Bind(wx.EVT_LISTBOX,self.selLoadFile,列表框)”。我将如何添加另一个功能,我想这就是您所称的功能。像self.selLoadFile一样,如何将另一个函数添加到同一事件中?我正在制作音乐播放器,希望文件被选择后自动播放。 self.selLoadFile函数加载文件,如何将“ self.Play”函数添加到同一evt?
提前感谢!
[抱歉,我是编程新手。你能帮我一点忙吗?因此,如果我的功能在哪里:
def selLoadFile(self, event):
my_selection = self.myListBox.GetStringSelection()
file_path = os.path.join(os.getcwd(),"songs",my_selection)
self.doLoadFile2(file_path)
def doLoadFile2(self, file_path):
if not self.mc.Load(file_path):
wx.MessageBox("Unable to load %s: Unsupported format?" % file_path, "ERROR", wx.ICON_ERROR | wx.OK)
else:
folder, filename = os.path.split(file_path)
self.st_file.SetLabel('%s' % filename)
self.mc.SetBestFittingSize()
self.mc.Play()
def Play(self, event):
self.mc.Play()
self.playbackSlider.SetRange(0,self.mc.Length())
我如何将上述所有三个功能包含在一个功能中?
如果您要将小部件绑定到两个事件处理程序,则只需执行此操作。只要您在处理程序代码的末尾调用event.Skip(),该命令就会起作用。如果没有此行,则该事件将由第一个处理程序使用,并且不会被任何其他处理程序捕获。这是一个愚蠢的例子:
import wx
########################################################################
class MyPanel(wx.Panel):
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
btn = wx.Button(self, label="Press Me")
btn.Bind(wx.EVT_BUTTON, self.HandlerOne)
btn.Bind(wx.EVT_BUTTON, self.HandlerTwo)
def HandlerOne(self, event):
print "handler one fired!"
event.Skip()
def HandlerTwo(self, event):
print "handler two fired!"
event.Skip()
########################################################################
class MyFrame(wx.Frame):
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Test")
panel = MyPanel(self)
self.Show()
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
app.MainLoop()