2012-07-19 20 views
0

我正在製作音樂播放器。我有一個列表框,其中包含目錄「歌曲」中的歌曲列表。如何確定選擇了哪首歌曲,以及如何繼續播放?如何確定在wxpython中選擇了哪個列表框項目

CODE:

songlist = os.listdir('songs') 
    self.myListBox = listbox = wx.ListBox(panel2, -1, (10,200), (140,200), songlist, wx.LB_SINGLE) 

    self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.selLoadFile, listbox) 

def selLoadFile(self, event): 
    file_path = os.path.join(os.os.getcwd(), "songs", self.myListBox.getSelectedItem()) 
    self.doLoadFile(file_path) 

    ########### I believe the problem is above^here. But I could be wrong. 

def Load(self, event): 
    dlg = wx.FileDialog(self, "Choose a media file", "songs", "", "*.*", wx.OPEN) 
    if dlg.ShowModal() == wx.ID_OK: 
     path = dlg.GetPath() 
     self.doLoadFile(path) 
     dlg.Destroy() 

def doLoadFile(self, path): 
    if not self.mc.Load(path): 
     wx.MessageBox("Unable to load %s: Unsupported format?" % path, "ERROR", wx.ICON_ERROR | wx.OK) 

    else: 
     folder, filename = os.path.split(path) 
     self.st_file.SetLabel('%s' % filename) 
     self.mc.SetBestFittingSize() 
     self.mc.Play() 

回答

0

有幾個問題。首先你有錯誤的事件綁定。 EVT_LIST_ITEM_SELECTED用於wx.ListCtrl。你想要EVT_LISTBOX。接下來在你的處理程序中你有getSelectedItem,這不是一個真正的方法。有GetSelection,它返回所選項目的整數位置(從0開始),還有GetStringSelection(),這可能是你想要的。

你不說你在播放什麼。你在使用wx.media.MediaCtrl嗎?如果是這樣的話,那麼我寫的關於播放MP3的教程可能會幫助你:http://www.blog.pythonlibrary.org/2010/04/20/wxpython-creating-a-simple-mp3-player/

我也玩過MplayerCtrl,它比Mplayer更好看,雖然設置起來可能有點複雜。如果你喜歡,你可以在這裏閱讀:http://www.blog.pythonlibrary.org/2010/07/24/wxpython-creating-a-simple-media-player/

+0

感謝您的信息!這是一個很好的教程和例子,這是我用來幫助建立我的音樂播放器的第一個地方。哦,我正在使用wx.media.MediaCtrl – Worm 2012-07-19 15:43:26

相關問題