[問題] wxMediaCtrl

看板Python作者 (Ar藤)時間14年前 (2010/01/16 19:06), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串1/1
小弟最近在用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

01/16 21:24, , 1F
http://0rz.tw/HC8wU 提到LOAD之後會等待 EVT_MEDIA_LOADED
01/16 21:24, 1F

01/16 21:25, , 2F
所以讓 EVT_MEDIA_LOADED 去CALL onPlay 即可
01/16 21:25, 2F

01/16 22:37, , 3F
感謝!!! 我成功了!
01/16 22:37, 3F

01/16 23:13, , 4F
再請教一個問題 因為動一下視窗大小才看的到畫面 我都用
01/16 23:13, 4F

01/16 23:14, , 5F
SetSize調一下 這樣是可以 但實在有點搞笑
01/16 23:14, 5F

01/16 23:14, , 6F
試過了Update Refresh都沒用 不知怎麼做才是正確的方法
01/16 23:14, 6F

01/17 09:08, , 7F
self.mc.Play() 下一行加入 self.mc.SetInitialSize()
01/17 09:08, 7F

01/17 11:38, , 8F
感謝感謝!
01/17 11:38, 8F
文章代碼(AID): #1BKPst4T (Python)