0

音楽プレーヤーを作っています。ディレクトリ「曲」からの曲のリストを含むリストボックスがあります。どの曲が選択されているかをどのように判断し、どのように再生しますか?

コード:

    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()
4

1 に答える 1

0

いくつかの問題があります。まず、間違ったイベントがバインドされています。EVT_LIST_ITEM_SELECTED は wx.ListCtrl 用です。EVT_LISTBOX が必要です。ハンドラーの次は getSelectedItem です。これは実際のメソッドではありません。選択された項目の整数位置 (0 ベース) を返す GetSelection と、おそらく必要な GetStringSelection() があります。

再生に何を使用しているかは言いません。wx.media.MediaCtrl を使用していますか? もしそうなら、MP3 の再生について私が書いたこのチュートリアルが役立つかもしれません: http://www.blog.pythonlibrary.org/2010/04/20/wxpython-creating-a-simple-mp3-player/

Mplayer をラップする MplayerCtrl も試してみましたが、セットアップが少し複雑になる可能性がありますが、MediaCtrl よりも堅牢に見えます。必要に応じて、ここでそれについて読むことができます: http://www.blog.pythonlibrary.org/2010/07/24/wxpython-creating-a-simple-media-player/

于 2012-07-19T14:00:05.690 に答える