2

このバインド「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 つの関数すべてを 1 つの関数に含めるにはどうすればよいですか?

4

1 に答える 1

5

ウィジェットを 2 つのイベント ハンドラーにバインドする場合は、そのまま実行してください。これは、ハンドラー コードの最後で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()
于 2012-07-24T16:18:26.047 に答える