看板 Python 關於我們 聯絡資訊
小弟最近在用wxpython寫播影音的東西 但有些地方很奇怪 下面的碼是個非常簡單的播放器 (ref: http://www.python-forum.org/pythonforum/viewtopic.php?f=2&t=10354) # -*- coding: utf_8 -*- import wx import wx.media import time class MyFrame(wx.Frame): def __init__(self, parent, mytitle, mysize): wx.Frame.__init__(self, parent, wx.ID_ANY, mytitle, size=mysize) self.mc = wx.media.MediaCtrl(self, style=wx.SIMPLE_BORDER) loadButton = wx.Button(self, wx.ID_ANY, "Load File") self.Bind(wx.EVT_BUTTON, self.onLoadFile, loadButton) playButton = wx.Button(self, wx.ID_ANY, "Play") self.Bind(wx.EVT_BUTTON, self.onPlay, playButton) sizer = wx.GridBagSizer(vgap=5, hgap=5) sizer.Add(loadButton, pos=(1,1)) sizer.Add(playButton, pos=(4,1)) sizer.Add(self.mc, pos=(5,1), span=(7,3)) self.SetSizer(sizer) def onLoadFile(self, evt): self.mc.Load("test.mpg") #time.sleep(0.5) #self.onPlay(evt) def onPlay(self, evt): self.mc.Play() app = wx.App(0) mytitle = "Video" MyFrame(None, mytitle, (500, 500)).Show() app.MainLoop() 在同目錄下有test.mpg的影片檔 播影片時先按load 再按play 再把視窗放大就可以看到 但是如果我在onLoadFile函數下加一行self.mc.Play() 預測是可以按load再放大視窗就能播了 不過卻沒反應 一定要按play鈕才可以 原本猜跟時間有關 但把 #time.sleep(0.5) #self.onPlay(evt) 這兩行的註解拿掉也沒用 還是要靠按鈕來按 請問這是什麼原因?? 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.140.149
doghib:http://0rz.tw/HC8wU 提到LOAD之後會等待 EVT_MEDIA_LOADED 01/16 21:24
doghib:所以讓 EVT_MEDIA_LOADED 去CALL onPlay 即可 01/16 21:25
Arton0306:感謝!!! 我成功了! 01/16 22:37
Arton0306:再請教一個問題 因為動一下視窗大小才看的到畫面 我都用 01/16 23:13
Arton0306:SetSize調一下 這樣是可以 但實在有點搞笑 01/16 23:14
Arton0306:試過了Update Refresh都沒用 不知怎麼做才是正確的方法 01/16 23:14
doghib:self.mc.Play() 下一行加入 self.mc.SetInitialSize() 01/17 09:08
Arton0306:感謝感謝! 01/17 11:38