[英]how to bind 2 functions to a single event
我有這個綁定“self.Bind(wx.EVT_LISTBOX, self.selLoadFile, listbox)”。 我將如何添加另一個功能,我想這就是你所說的。 與 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())
我如何將上述所有 3 個功能包含在一個功能中?
如果你想將一個小部件綁定到兩個事件處理程序,那么就這樣做吧。 只要您在處理程序代碼末尾調用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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.