作者Arton0306 (Ar藤)
看板Python
標題[問題] wxMediaCtrl
時間Sat Jan 16 19:06:28 2010
小弟最近在用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:所以讓 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