如何执行这个python媒体播放器?

如何执行这个python媒体播放器?,python,wxpython,Python,Wxpython,我只是用python复制粘贴了这个媒体播放器。当我使用命令python mediaplayer.py(mediaplayer.py是我的filwename)运行它时,没有输出。有人能告诉我为什么吗 import os import time import wx import MplayerCtrl as mpc import wx.lib.buttons as buttons dirName = os.path.dirname(os.path.abspath(__file__)) bitmap

我只是用python复制粘贴了这个媒体播放器。当我使用命令
python mediaplayer.py
(mediaplayer.py是我的filwename)运行它时,没有输出。有人能告诉我为什么吗

import os
import time
import wx
import MplayerCtrl as mpc
import wx.lib.buttons as buttons

dirName = os.path.dirname(os.path.abspath(__file__))
bitmapDir = os.path.join(dirName,'bitmaps')
类框架(wx.Frame):


它并不意味着要被使用,因为你张贴它

该类需要实例化,并可能在某种类型的主循环中运行

此外,正如您在
import MplayerCtrl as mpc
一行中所看到的,它不是一个独立的

请至少张贴一个链接到你下载它的地方


另外,请注意,它似乎是一个真正的媒体播放器的包装,实现了wxPython接口,而不是一个完整的媒体播放器,因此您仍然需要实际的应用程序(我假设基于命名的mplayer)来执行任何操作。

它不是在发布时使用的

该类需要实例化,并可能在某种类型的主循环中运行

此外,正如您在
import MplayerCtrl as mpc
一行中所看到的,它不是一个独立的

请至少张贴一个链接到你下载它的地方


另外,请注意,它似乎是实现wxPython接口的真实媒体播放器的包装,而不是完整的媒体播放器,因此您仍然需要实际的应用程序(我假设基于命名的mplayer)让它做任何事情。

实际创建类的对象怎么样?实际创建类的对象怎么样?
def __init__(self,parent,id,title,mplayer):
    wx.Frame.__init__(self,parent,id,title)
     self.panel = wx.Panel(self)

    sp = wx.StandardPaths.Get()
    self.currentFolder = sp.GetDocumentsDir()
    self.currentVolume = 50

    self.create_menu()

    # create sizers
    mainSizer = wx.BoxSizer(wx.VERTICAL)
    controlSizer = self.build_controls()
    sliderSizer = wx.BoxSizer(wx.HORIZONTAL)

    self.mplayer = mpc.MplayerCtrl(self.panel, -1, mplayer)
    self.playbackSlider = wx.Slider(self.panel, size=wx.DefaultSize)
    sliderSizer.Add(self.playbackSlider, 1, wx.ALL|wx.EXPAND, 5)

    # create volume control
    self.volumeCtrl = wx.Slider(self.panel)
    self.volumeCtrl.SetRange(0, 100)
    self.volumeCtrl.SetValue(self.currentVolume)
    self.volumeCtrl.Bind(wx.EVT_SLIDER, self.on_set_volume)
    controlSizer.Add(self.volumeCtrl, 0, wx.ALL, 5)

    # create track counter
    self.trackCounter = wx.StaticText(self.panel, label="00:00")
    sliderSizer.Add(self.trackCounter, 0, wx.ALL|wx.CENTER, 5)

    # set up playback timer
    self.playbackTimer = wx.Timer(self)
    self.Bind(wx.EVT_TIMER, self.on_update_playback)

    mainSizer.Add(self.mplayer, 1, wx.ALL|wx.EXPAND, 5)
    mainSizer.Add(sliderSizer, 0, wx.ALL|wx.EXPAND, 5)
    mainSizer.Add(controlSizer, 0, wx.ALL|wx.CENTER, 5)
    self.panel.SetSizer(mainSizer)

    self.Bind(mpc.EVT_MEDIA_STARTED, self.on_media_started)
    self.Bind(mpc.EVT_MEDIA_FINISHED, self.on_media_finished)
    self.Bind(mpc.EVT_PROCESS_STARTED, self.on_process_started)
    self.Bind(mpc.EVT_PROCESS_STOPPED, self.on_process_stopped)

    self.Show()
    self.panel.Layout()

#----------------------------------------------------------------------
def build_btn(self, btnDict, sizer):
    """"""
    bmp = btnDict['bitmap']
    handler = btnDict['handler']

    img = wx.Bitmap(os.path.join(bitmapDir, bmp))
    btn = buttons.GenBitmapButton(self.panel, bitmap=img,
                                  name=btnDict['name'])
    btn.SetInitialSize()
    btn.Bind(wx.EVT_BUTTON, handler)
    sizer.Add(btn, 0, wx.LEFT, 3)

#----------------------------------------------------------------------
def build_controls(self):
    """
    Builds the audio bar controls
    """
    controlSizer = wx.BoxSizer(wx.HORIZONTAL)

    btnData = [{'bitmap':'player_pause.png',
                'handler':self.on_pause, 'name':'pause'},
               {'bitmap':'player_stop.png',
                'handler':self.on_stop, 'name':'stop'}]
    for btn in btnData:
        self.build_btn(btn, controlSizer)

    return controlSizer

#----------------------------------------------------------------------
def create_menu(self):
    """
    Creates a menu
    """
    menubar = wx.MenuBar()
    fileMenu = wx.Menu()
    add_file_menu_item = fileMenu.Append(wx.NewId(), "&Add File", "Add Media File")
    menubar.Append(fileMenu, '&File')

    self.SetMenuBar(menubar)
    self.Bind(wx.EVT_MENU, self.on_add_file, add_file_menu_item)

#----------------------------------------------------------------------
def on_add_file(self, event):
    """
    Add a Movie and start playing it
    """
    wildcard = "Media Files (*.*)|*.*"
    dlg = wx.FileDialog(
        self, message="Choose a file",
        defaultDir=self.currentFolder,
        defaultFile="",
        wildcard=wildcard,
        style=wx.OPEN | wx.CHANGE_DIR
        )
    if dlg.ShowModal() == wx.ID_OK:
        path = dlg.GetPath()
        self.currentFolder = os.path.dirname(path[0])
        trackPath = '"%s"' % path.replace("\\", "/")
        self.mplayer.Loadfile(trackPath)

        t_len = self.mplayer.GetTimeLength()
        self.playbackSlider.SetRange(0, t_len)
        self.playbackTimer.Start(100)


#----------------------------------------------------------------------
def on_media_started(self, event):
    print 'Media started!'

#----------------------------------------------------------------------
def on_media_finished(self, event):
    print 'Media finished!'
    self.playbackTimer.Stop()

#----------------------------------------------------------------------
def on_pause(self, event):
    """"""
    if self.playbackTimer.IsRunning():
        print "pausing..."
        self.mplayer.Pause()
        self.playbackTimer.Stop()
    else:
        print "unpausing..."
        self.mplayer.Pause()
        self.playbackTimer.Start()

#----------------------------------------------------------------------
def on_process_started(self, event):
    print 'Process started!'

#----------------------------------------------------------------------
def on_process_stopped(self, event):
    print 'Process stopped!'

#----------------------------------------------------------------------
def on_set_volume(self, event):
    """
    Sets the volume of the music player
    """
    self.currentVolume = self.volumeCtrl.GetValue()
    self.mplayer.SetProperty("volume", self.currentVolume)

#----------------------------------------------------------------------
def on_stop(self, event):
    """"""
    print "stopping..."
    self.mplayer.Stop()
    self.playbackTimer.Stop()

#----------------------------------------------------------------------
def on_update_playback(self, event):
    """
    Updates playback slider and track counter
    """
    try:
        offset = self.mplayer.GetTimePos()
    except:
        return
    print offset
    mod_off = str(offset)[-1]
    if mod_off == '0':
        print "mod_off"
        offset = int(offset)
        self.playbackSlider.SetValue(offset)
        secsPlayed = time.strftime('%M:%S', time.gmtime(offset))
        self.trackCounter.SetLabel(secsPlayed)