gpt4 book ai didi

python - 如何将 2 个函数绑定(bind)到单个事件

转载 作者:行者123 更新时间:2023-11-28 22:02:16 25 4
gpt4 key购买 nike

我有这个绑定(bind)“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 个函数?

最佳答案

如果你想将一个小部件绑定(bind)到两个事件处理程序,那就去做吧。只要你调用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()

关于python - 如何将 2 个函数绑定(bind)到单个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11621833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com