老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

如何使用python實現(xiàn)媒體播放器功能的示例-創(chuàng)新互聯(lián)

這篇文章主要介紹如何使用python實現(xiàn)媒體播放器功能的示例,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

10余年的璧山網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整璧山建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“璧山網(wǎng)站設(shè)計”,“璧山網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

python實現(xiàn)媒體播放器功能的具體代碼

# -*- coding: utf-8 -*- 
import wx; 
import wx.media; 
import os; 
import SPrint; 
import mediaStateBar; 
import mediaList; 
import SaveLog; 
import MediaItem; 
woldcart = "media files|*.*|avi|*.avi|rmvb|*.rmvb|rm|*.rm|wma|*.wma|mp3|*.mp3"; 
class MediaFrame(wx.Frame): 
 def __init__(self): 
  wx.Frame.__init__(self,None,wx.NewId(),u"媒體播放器",pos=wx.DefaultPosition,size=(500,500)); 
  self.media = ''; 
  try: 
   self.media = wx.media.MediaCtrl(self,style=wx.SIMPLE_BORDER, 
            #szBackend=wx.media.MEDIABACKEND_DIRECTSHOW 
            #szBackend=wx.media.MEDIABACKEND_QUICKTIME 
            #szBackend=wx.media.MEDIABACKEND_WMP10 
            ); 
   self.media.Bind(wx.media.EVT_MEDIA_LOADED,self.mediaLoaded); 
   self.media.Bind(wx.media.EVT_MEDIA_STATECHANGED,self.mediaStateChange) 
  except NotImplementedError: 
   self.Destroy() 
   raise; 
  self.listView = ''; 
  self.item = MediaItem.MediaItem(); 
  self.sb = mediaStateBar.MediaStateBar(self); 
  self.SetStatusBar(self.sb); 
  self.log = SaveLog.SaveLog(); 
  #self.log.test(); 
  self.menu = wx.Menu() 
  self.openMenu = self.menu.Append(wx.NewId(),u"打開文件"); 
  self.Bind(wx.EVT_MENU,self._openFile,self.openMenu); 
  self.quitMenu = self.menu.Append(wx.NewId(),u"退出"); 
  self.Bind(wx.EVT_MENU,self.quit,self.quitMenu); 
  self.viewMenu = wx.Menu(); 
  self.listMenu = self.viewMenu.Append(wx.NewId(),u"打開播放列表"); 
  self.Bind(wx.EVT_MENU,self.openList,self.listMenu); 
  self.loadListMenu = self.viewMenu.Append(wx.NewId(),u"加載播放列表"); 
  self.Bind(wx.EVT_MENU,self.loadMediaList,self.loadListMenu); 
  self.saveListMenu = self.viewMenu.Append(wx.NewId(),u"保存播放列表") 
  self.Bind(wx.EVT_MENU,self.saveMediaList,self.saveListMenu); 
  menuBar = wx.MenuBar(); 
  menuBar.Append(self.menu,u"文件") 
  menuBar.Append(self.viewMenu,u"播放列表") 
  self.SetMenuBar(menuBar); 
  self.slider = wx.Slider(self,wx.NewId(), 0,0,100); 
  self.Bind(wx.EVT_SLIDER,self.onSeek,self.slider); 
  self.btnGroupSizer = wx.BoxSizer(wx.HORIZONTAL); 
  self.btnGroupSizer.Add((5,5),0) 
  self.playBtn = self.createButton("./pic/play.png",self.playMp3,u"播放"); 
  self.playBtn.Disable() 
  self.btnGroupSizer.Add(self.playBtn); 
  self.btnGroupSizer.Add((5,5),0) 
  self.pauseBtn = self.createButton("./pic/pause.png",self.pauseMp3,u"暫停"); 
  self.pauseBtn.Disable() 
  self.btnGroupSizer.Add(self.pauseBtn); 
  self.btnGroupSizer.Add((5,5),0) 
  self.stopBtn = self.createButton("./pic/stop.png",self.stopMp3,u"停止"); 
  self.stopBtn.Disable() 
  self.btnGroupSizer.Add(self.stopBtn); 
  self.btnGroupSizer.Add((5,5),0) 
  self.preBtn = self.createButton("./pic/pre.png",self.preMp3,u"前一個"); 
  self.preBtn.Disable() 
  self.btnGroupSizer.Add(self.preBtn); 
  self.btnGroupSizer.Add((5,5),0) 
  self.nextBtn = self.createButton("./pic/next.png",self.nextMp3,u"下一個"); 
  self.nextBtn.Disable() 
  self.btnGroupSizer.Add(self.nextBtn); 
  self.btnGroupSizer.Add((5,5),0) 
  self.openBtn = self.createButton("./pic/media.png",self._openFile,u"打開文件"); 
  #self.openBtn.Disable() 
  self.btnGroupSizer.Add(self.openBtn); 
  self.btnGroupSizer.Add((5,5),0) 
  self.listBtn = self.createButton("./pic/list.png",self.openList,u"打開列表"); 
  #self.listBtn.Disable() 
  self.btnGroupSizer.Add(self.listBtn) 
  self.btnGroupSizer.Add((5,5),0) 
  self.volSlider = wx.Slider(self,wx.NewId(), 0,0,100); 
  self.Bind(wx.EVT_SLIDER,self.volumeSeek,self.volSlider); 
  self.btnGroupSizer.Add(self.volSlider) 
  self.btnGroupSizer.Add((5,5),0) 
  self.volTxt = wx.StaticText(self,wx.NewId(),"") 
  self.btnGroupSizer.Add(self.volTxt) 
  self.btnGroupSizer.Add((5,5),0) 
  mainSizer = wx.BoxSizer(wx.VERTICAL); 
  mainSizer.Add(self.media,1,wx.EXPAND|wx.ALL,5); 
  #mainSizer.Add((5,5),0) 
  mainSizer.Add(self.slider,0,wx.EXPAND|wx.ALL,5); 
  #mainSizer.Add((2,2),0) 
  mainSizer.Add(self.btnGroupSizer,0,wx.EXPAND|wx.ALL,5); 
  #mainSizer.Add((2,2),0) 
  self.SetSizer(mainSizer); 
  self.Layout(); 
  self.timer = wx.Timer(self) 
  self.Bind(wx.EVT_TIMER,self.onTimer); 
  self.timer.Start(200); 
 def createButton(self,img,clickFun,tip=""): 
  bmp = wx.Bitmap(img, wx.BITMAP_TYPE_PNG); 
  btn = wx.BitmapButton(self,wx.NewId(),bmp); 
  if tip != '' : btn.SetToolTipString(tip); 
  btn.Bind(wx.EVT_BUTTON,clickFun); 
  return btn; 
 def quit(self,event): 
  self.Destroy(); 
 def playMp3(self,e): 
  if self.item != '': 
   self.media.Play() 
  # self.media.SetInitialSize() 
 def pauseMp3(self,e=''): 
  self.media.Pause() 
 def stopMp3(self,e=''): 
  self.media.Stop() 
 def preMp3(self,e): 
  if self.item!='': 
   self.item = self.log.getPreItem(self.item.index) 
   if self.item != '': 
    self.playMedia(self.item.url,self.item.fileName); 
 def nextMp3(self,e): 
  if self.item!='': 
   self.item = self.log.getNextItem(self.item.index) 
   if self.item != '': 
    self.playMedia(self.item.url,self.item.fileName); 
 def onSeek(self,event): 
  self.media.Seek(self.slider.GetValue()) 
 def callAfterPlayMedia(self,url): 
  #self.media.SetInitialSize(); 
  self.media.Play(); 
 def playMedia(self,url,filename): 
  #print SPrint.encodeFromSystem( u"播放文件: " ) , SPrint.encodeFromSystem(url) ; 
  if self.media.Load(url) != True: 
   return ; 
  self.item = MediaItem.MediaItem(); 
  self.item.fileName = filename; 
  self.item.url = url; 
  self.SetTitle(filename) 
  self.SetStatusText(filename,1) 
  #wx.FutureCall(2000,self.callAfterPlayMedia,url); 
 def _openFile(self,event): 
  dialog = wx.FileDialog(self,u"打開文件",'F://movie//',"",woldcart,style=wx.OPEN|wx.CHANGE_DIR) 
  if dialog.ShowModal() == wx.ID_OK: 
   self.playMedia(dialog.GetPath(),dialog.GetFilename()) 
  dialog.Destroy(); 
 def cellRemove(self,url,all=False): 
  if all == True: 
   self.stopMp3() 
   self.item = ''; 
   return ; 
  if self.item.url == url: 
   self.stopMp3(); 
   self.item = ''; 
 def volumeSeek(self,evt): 
  #print float(self.volSlider.GetValue()/100); 
  self.media.SetVolume(self.volSlider.GetValue()/100.0) 
  self.volTxt.SetLabel(str(self.volSlider.GetValue())+'%') 
 def mediaLoaded(self,e): 
  print "media loaded!" 
  self.media.Play(); 
  self.slider.SetRange(0,self.media.Length()); 
  self.item.length = self.getAccurateTime(self.media.Length()/1000); 
  if self.log.addItem(self.item): 
   if self.listView != '': 
    self.listView.reflash(self.log); 
  if self.log.haveNextItem(self.item.index): 
   self.nextBtn.Enable(); 
  else: 
   self.nextBtn.Disable() 
  if self.log.havePreItem(self.item.index): 
   self.preBtn.Enable() 
  else: 
   self.preBtn.Disable(); 
  self.volSlider.SetValue(self.media.GetVolume()*100); 
  self.volTxt.SetLabel(str(self.volSlider.GetValue())+'%') 
 def mediaStateChange(self,evt): 
  if self.media.GetState() == wx.media.MEDIASTATE_PAUSED: 
   self.playBtn.Enable() 
   self.pauseBtn.Disable() 
   self.stopBtn.Enable(); 
   self.SetStatusText(u"暫停") 
  elif self.media.GetState() == wx.media.MEDIASTATE_PLAYING: 
   self.playBtn.Disable() 
   self.pauseBtn.Enable() 
   self.stopBtn.Enable(); 
   self.SetStatusText(u"播放") 
  elif self.media.GetState() == wx.media.MEDIASTATE_STOPPED: 
   self.playBtn.Enable() 
   self.pauseBtn.Enable() 
   self.stopBtn.Disable(); 
   self.SetStatusText(u"停止") 
 def onTimer(self,evt): 
  self.slider.SetValue(self.media.Tell()); 
  self.SetStatusText(self.creatTimeStatusTEXT(),1) 
 def creatTimeStatusTEXT(self): 
  current = self.getAccurateTime(self.media.Tell()/1000); 
  total = self.getAccurateTime(self.media.Length()/1000); 
  return ' ' + current + '/' + total; 
 def openList(self,evt): 
  if self.listView == '': 
   self.listView = mediaList.MediaListView(self,self.log); 
   self.listView.CenterOnParent(wx.BOTH); 
   self.listView.Show(); 
   self.listView.Bind(wx.EVT_CLOSE,self.closeOpenList); 
  else: 
   self.closeOpenList(evt); 
 def closeOpenList(self,evt): 
  self.listView.Destroy(); 
  self.listView = ''; 
 def loadMediaList(self,evt): 
  woldcart1 = "txt|*.txt"; 
  dialog = wx.FileDialog(self,u"加載播放列表",'C:',"",woldcart1,style=wx.OPEN|wx.CHANGE_DIR) 
  if dialog.ShowModal() == wx.ID_OK: 
   self._loadMediaList(dialog.GetPath()) 
  dialog.Destroy(); 
 def _loadMediaList(self,url): 
  f = file(url) 
  lines = f.readlines() 
  for line in lines: 
   if line: 
    self.log.loadLog(line); 
 def saveMediaList(self,evt): 
  woldcart1 = "txt|*.txt"; 
  dialog = wx.FileDialog(self,u"保存播放列表",'C:',"",woldcart1,style=wx.SAVE|wx.CHANGE_DIR) 
  if dialog.ShowModal() == wx.ID_OK: 
   self._saveMediaList(dialog.GetPath()) 
  dialog.Destroy(); 
 def _saveMediaList(self,url): 
  f = file(url,"w+") 
  f.writelines(self.log.createLog()); 
  f.close(); 
  self.showMessage(u"保存成功!"); 
 def showMessage(self,str): 
  dlg = wx.MessageDialog(self, str,u"消息", wx.OK | wx.ICON_INFORMATION) 
  dlg.ShowModal() 
  dlg.Destroy() 
 def getAccurateTime(self,s): 
  h = 0 
  m = 0 
  if s/60 !=0: 
   m = s/60 
   s = s%60 
  if m/60 !=0: 
   h = m/60 
   m = m%60 
  return str(h)+':'+str(m)+':'+str(s) 
 
if __name__ == "__main__": 
 app = wx.PySimpleApp() 
 frame = MediaFrame(); 
 bmp = wx.Icon("./pic/media.png",wx.BITMAP_TYPE_PNG) 
 frame.SetIcon(bmp) 
 frame.Show(); 
 app.MainLoop();

mediaList.py

# -*- coding: utf-8 -*- 
import wx; 
import sys; 
import os; 
import SaveLog; 
import subprocess; 
class MediaListView(wx.MiniFrame): 
 def __init__(self,parent,log): 
  wx.MiniFrame.__init__(self,parent,wx.NewId(),u"文件列表",style=wx.DEFAULT_FRAME_STYLE); 
  self.SetAutoLayout(True) 
  self.mediaMain = parent; 
  self.menu = ''; 
  self.selectIndex = -1 
  self.listDataLog = SaveLog.SaveLog(); 
  self.listDataLog = log; 
  self.listct = wx.ListCtrl(self,wx.NewId(),style=wx.LC_REPORT| 
               wx.LC_VRULES| 
               wx.LC_SORT_ASCENDING); 
  self.listct.InsertColumn(0,u"編號") 
  self.listct.SetColumnWidth(0,38) 
  self.listct.InsertColumn(1,u"名字") 
  self.listct.SetColumnWidth(1,235) 
  self.listct.InsertColumn(2,u"時間"); 
  self.listct.SetColumnWidth(2,105) 
  frSizer = wx.BoxSizer(wx.VERTICAL) 
  frSizer.Add(self.listct,1,wx.EXPAND|wx.ALL,5) 
  self.listct.Bind(wx.EVT_CONTEXT_MENU,self.onRightClick) 
  self.listct.Bind(wx.EVT_LEFT_DCLICK,self.doubleClick) 
  self.listct.Bind(wx.EVT_LIST_ITEM_SELECTED,self.itemSelected) 
  self.SetSizer(frSizer) 
  self.Layout(); 
  wx.CallAfter(self.reflash,self.listDataLog) 
 def reflash(self,log=''): 
  self.listct.DeleteAllItems(); 
  if log != '': 
   self.listDataLog = log; 
  i = 0; 
  ls = log.getList(); 
  for it in ls: 
   if it: 
    index = self.listct.InsertStringItem(i,str(it.index)); 
    self.listct.SetStringItem(index,0,str(it.index)) 
    self.listct.SetStringItem(index,1,it.fileName) 
    self.listct.SetStringItem(index,2,it.length) 
    i = i+1; 
 def onRightClick(self,evt): 
  self.menu = wx.Menu(); 
  self.playMenu = self.menu.Append(wx.NewId(),u"播放") 
  self.Bind(wx.EVT_MENU,self.cellPlay,self.playMenu) 
  self.delMenu = self.menu.Append(wx.NewId(),u"刪除") 
  self.Bind(wx.EVT_MENU,self.cellRomve,self.delMenu); 
  self.dirMenu = self.menu.Append(wx.NewId(),u"打開文件目錄") 
  self.Bind(wx.EVT_MENU,self.openDir,self.dirMenu); 
  self.delAllMenu = self.menu.Append(wx.NewId(),u"清除播放列表") 
  self.Bind(wx.EVT_MENU,self.clearAll,self.delAllMenu); 
  self.PopupMenu(self.menu); 
  self.menu.Destroy(); 
 def cellPlay(self,evt): 
  self.selectIndex = self.listct.GetFirstSelected(); 
  item = self.listDataLog.getItemByIndex(self.selectIndex); 
  self.mediaMain.playMedia(item.url,item.fileName); 
 def cellRomve(self,evt): 
  #self.selectIndex = self.listct.GetFirstSelected(); 
  url = self.listDataLog.delItemByIndex(self.listct.GetFirstSelected()); 
  self.listDataLog.reflashDataByIndex(); 
  self.reflash(self.listDataLog); 
  self.mediaMain.cellRemove(url) 
 def doubleClick(self,evt): 
  item = self.listDataLog.getItemByIndex(self.selectIndex); 
  self.mediaMain.playMedia(item.url,item.fileName); 
  evt.Skip(); 
 def itemSelected(self,evt): 
  self.selectIndex = evt.GetIndex(); 
  evt.Skip(); 
 def openDir(self,evt): 
  self.selectIndex = self.listct.GetFirstSelected(); 
  item = self.listDataLog.getItemByIndex(self.selectIndex); 
  subprocess.Popen("explorer " + os.path.split(item.url)[0]); 
 def clearAll(self,evt): 
  self.listDataLog.clearAll(); 
  self.reflash(self.listDataLog); 
  self.mediaMain.cellRemove('',True)

SaveLog.py

import MediaItem; 
class SaveLog(): 
 list = []; 
 def addItem(self,it=MediaItem.MediaItem): 
  if self.getItemByURL(it.url) == '' : 
   it.index = len(self.list) + 1; 
   self.list.append(it); 
   return True; 
  return False; 
 def clearAll(self): 
  self.list = []; 
 def getItemByURL(self,url): 
  for it in self.list: 
   if it and it.url == url: 
    return it; 
  return ''; 
 def getItemByIndex(self,ind): 
  return self.list[ind]; 
 def delItemByIndex(self,ind): 
  it = self.getItemByIndex(ind); 
  if it : 
   url = it.url; 
   self.list.remove(it); 
   return url; 
  return ''; 
 def reflashDataByIndex(self): 
  i = 1; 
  for it in self.list: 
   if it: 
    it.index = i; 
    i = i+ 1; 
 def havePreItem(self,ind): 
  if ind-1>0: 
   return True; 
  return False; 
 def haveNextItem(self,ind): 
  if ind < len(self.list)-1: 
   return True; 
  return False; 
 def getPreItem(self,ind): 
  if ind>0: 
   ind = ind -1; 
   return self.list[ind]; 
  return ''; 
 def getNextItem(self,ind): 
  if ind < len(self.list)-1: 
   ind = ind + 1; 
   return self.list[ind]; 
  return ''; 
 def getList(self): 
  return self.list; 
 def createLog(self): 
  out = []; 
  for it in self.list: 
   if it: 
    out.append(it.createLog()) 
  return out; 
 def loadLog(self,s=''): 
  ls = s.split("|"); 
  item = MediaItem.MediaItem(); 
  item.index = ls[0] 
  item.fileName = ls[1] 
  item.url = ls[2] 
  item.length = ls[3]; 
  self.addItem(item); 
 
 def test(self): 
  item = MediaItem.MediaItem(); 
  item.index = 0; 
  item.fileName = '123' 
  item.length = '123' 
  item.url = '123' 
  self.list.append(item) 
  item2 = MediaItem.MediaItem(); 
  item2.index = 1; 
  item2.fileName = '1234' 
  item2.length = '1234' 
  item2.url = '1234' 
  self.list.append(item2) 
  item3 = MediaItem.MediaItem(); 
  item3.index = 2; 
  item3.fileName = '12345' 
  item3.length = '12345' 
  item3.url = '12345' 
  self.list.append(item3)

以上是“如何使用python實現(xiàn)媒體播放器功能的示例”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


分享文章:如何使用python實現(xiàn)媒體播放器功能的示例-創(chuàng)新互聯(lián)
文章地址:http://www.xueling.net.cn/article/dspsij.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 国产亚洲精品av | 国产精品久久久久久久久久黑人 | 超级av在线 | 国产亚洲欧美一区二区 | 国内精品伊人久久久久影院麻豆 | 国产99视频精品免费视频76 | 欧美黄色免费网站 | 超碰个人在线观看 | 香蕉一区 | 欧美在线免费观看 | 黄色的毛片 | 欧美精品免费在线 | 夜色资源站www国产在线观看 | 亚洲免费视频观看 | 邻居丰满的奶水在线hd | 久久精品极品 | 粉嫩大学生无套内射无码卡视频 | 大地资源在线视频资源 | 日日操日日插 | 亚洲啊v在线 | 国产午夜精品久久久久免费视高清 | 香蕉久久久久久AV成人 | 你懂得在线观看 | 寂寞少妇饥渴难耐自慰 | 全免费一级毛片免费看 | 亚洲欧美日韩不卡 | 免费观看的av网站 | 美女床上运动 | 永久91嫩草亚洲精品人人 | 中文字幕视频在线免费 | 亚洲成在人网站av天堂 | 狠狠狠狠狠狠干 | 日本熟妇厨房XXXXX乱 | 一区二区三区产品乱码的解决方法 | 国产免费ab | 欧洲性XXXX免费视频在线观看 | 免费看a毛片| 亚洲综合久久成人A片 | 四虎在线视频免费观看 | 全免费一级毛片免费看 | 国产综合精品五月丁香好久久 |