簡體   English   中英

如何將 2 個函數綁定到單個事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM