python3 wx.media 视频和图片展示?
python3 wx.media video and image show?
# -*- coding: utf-8 -*-
import wx, wx.media
import time
class TestPanel(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.testMedia = wx.media.MediaCtrl(self,
szBackend=wx.media.MEDIABACKEND_WMP10,
style=wx.SIMPLE_BORDER,)
self.MOVE = ('6.mpg', '7.wmv','1.avi','4.jpg')
self.testMedia.Load(self.MOVE[0])
self.testMedia.Bind(wx.media.EVT_MEDIA_LOADED, self.play, self.testMedia)
self.testMedia.Bind(wx.media.EVT_MEDIA_STATECHANGED, self.play2, self.testMedia)
def play(self, e):
self.testMedia.GetBestSize()
self.testMedia.Play()
def play2(self, e):
if self.testMedia.GetState() == wx.media.MEDIASTATE_STOPPED:
for i in range(len(self.MOVE)):
if i == 1:
self.testMedia.Load(self.MOVE[1])
elif i == 2:
self.testMedia.Load(self.MOVE[2])
elif i == 3:
self.testMedia.Load(self.MOVE[3])
if __name__ == '__main__':
app = wx.App()
Fream = TestPanel()
Fream.Show(True)
app.MainLoop()
请帮助我接下来如何 self.MOVE[0] -> [1] -> [2] -> [3] -> [0] .... 循环播放
我不知道下一步该怎么做...在哪里可以看到 wx.media 教程和示例代码??
你不应该使用 wx.media.EVT_MEDIA_STATECHANGED 它可能会因为其他原因而不是媒体已经完成而改变。请改用 wx.media.EVT_MEDIA_FINISHED。
您可以使用一个简单的计数器循环。
在 Finished 状态下使用索引执行下一个 Load,代码应该可以工作。
我注意到您加载的最后一个项目是 .jpg。不确定 "finish"!
是什么意思
# -*- coding: utf-8 -*-
import wx, wx.media
import time
class TestPanel(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.testMedia = wx.media.MediaCtrl(self,
szBackend=wx.media.MEDIABACKEND_WMP10,
# szBackend=wx.media.MEDIABACKEND_GSTREAMER,
style=wx.SIMPLE_BORDER,)
self.MOVE = ('6.mpg', '7.wmv','1.avi','4.jpg')
# self.MOVE = ('V1.mp4', 'V2.mp4','V3.mp4','V4.mp4')
self.Mrange = 0
self.testMedia.Bind(wx.media.EVT_MEDIA_LOADED, self.play, self.testMedia)
self.testMedia.Bind(wx.media.EVT_MEDIA_FINISHED, self.play2, self.testMedia)
self.testMedia.Load(self.MOVE[self.Mrange])
def play(self, e):
print "Playing:",self.MOVE[self.Mrange]
self.testMedia.Play()
def play2(self, e):
self.testMedia.Stop()
self.Mrange += 1
print self.Mrange
if self.Mrange > len(self.MOVE) -1:
self.Mrange = 0
self.testMedia.Load(self.MOVE[self.Mrange])
if __name__ == '__main__':
app = wx.App()
Fream = TestPanel()
Fream.Show(True)
app.MainLoop()
# -*- coding: utf-8 -*-
import wx, wx.media
import time
class TestPanel(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.testMedia = wx.media.MediaCtrl(self,
szBackend=wx.media.MEDIABACKEND_WMP10,
style=wx.SIMPLE_BORDER,)
self.MOVE = ('6.mpg', '7.wmv','1.avi','4.jpg')
self.testMedia.Load(self.MOVE[0])
self.testMedia.Bind(wx.media.EVT_MEDIA_LOADED, self.play, self.testMedia)
self.testMedia.Bind(wx.media.EVT_MEDIA_STATECHANGED, self.play2, self.testMedia)
def play(self, e):
self.testMedia.GetBestSize()
self.testMedia.Play()
def play2(self, e):
if self.testMedia.GetState() == wx.media.MEDIASTATE_STOPPED:
for i in range(len(self.MOVE)):
if i == 1:
self.testMedia.Load(self.MOVE[1])
elif i == 2:
self.testMedia.Load(self.MOVE[2])
elif i == 3:
self.testMedia.Load(self.MOVE[3])
if __name__ == '__main__':
app = wx.App()
Fream = TestPanel()
Fream.Show(True)
app.MainLoop()
请帮助我接下来如何 self.MOVE[0] -> [1] -> [2] -> [3] -> [0] .... 循环播放 我不知道下一步该怎么做...在哪里可以看到 wx.media 教程和示例代码??
你不应该使用 wx.media.EVT_MEDIA_STATECHANGED 它可能会因为其他原因而不是媒体已经完成而改变。请改用 wx.media.EVT_MEDIA_FINISHED。
您可以使用一个简单的计数器循环。
在 Finished 状态下使用索引执行下一个 Load,代码应该可以工作。
我注意到您加载的最后一个项目是 .jpg。不确定 "finish"!
# -*- coding: utf-8 -*-
import wx, wx.media
import time
class TestPanel(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.testMedia = wx.media.MediaCtrl(self,
szBackend=wx.media.MEDIABACKEND_WMP10,
# szBackend=wx.media.MEDIABACKEND_GSTREAMER,
style=wx.SIMPLE_BORDER,)
self.MOVE = ('6.mpg', '7.wmv','1.avi','4.jpg')
# self.MOVE = ('V1.mp4', 'V2.mp4','V3.mp4','V4.mp4')
self.Mrange = 0
self.testMedia.Bind(wx.media.EVT_MEDIA_LOADED, self.play, self.testMedia)
self.testMedia.Bind(wx.media.EVT_MEDIA_FINISHED, self.play2, self.testMedia)
self.testMedia.Load(self.MOVE[self.Mrange])
def play(self, e):
print "Playing:",self.MOVE[self.Mrange]
self.testMedia.Play()
def play2(self, e):
self.testMedia.Stop()
self.Mrange += 1
print self.Mrange
if self.Mrange > len(self.MOVE) -1:
self.Mrange = 0
self.testMedia.Load(self.MOVE[self.Mrange])
if __name__ == '__main__':
app = wx.App()
Fream = TestPanel()
Fream.Show(True)
app.MainLoop()