作者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
2F:→ doghib:所以让 EVT_MEDIA_LOADED 去CALL onPlay 即可 01/16 21:25
3F:→ Arton0306:感谢!!! 我成功了! 01/16 22:37
4F:→ Arton0306:再请教一个问题 因为动一下视窗大小才看的到画面 我都用 01/16 23:13
5F:→ Arton0306:SetSize调一下 这样是可以 但实在有点搞笑 01/16 23:14
6F:→ Arton0306:试过了Update Refresh都没用 不知怎麽做才是正确的方法 01/16 23:14
7F:推 doghib:self.mc.Play() 下一行加入 self.mc.SetInitialSize() 01/17 09:08
8F:→ Arton0306:感谢感谢! 01/17 11:38