wxpython 영상 질문드립니다.
조회수 973회
저번에 올린 영상 재생관련해서 연관된 질문 입니다. 아래는 전체코드입니다.
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])
if __name__ == '__main__':
app = wx.App()
Fream = TestPanel()
Fream.Show(True)
app.MainLoop()
궁금한게 제가 wx.media 설명서를 보면서 만들어봤는데
self.testMedia.Bind(wx.media.EVT_MEDIA_LOADED, self.play, self.testMedia)
self.testMedia.Bind(wx.media.EVT_MEDIA_STATECHANGED, self.play2, self.testMedia)
wx.media.EVT_MEDIA_LOADED 이벤트가 미디어에서 재생할 수있는 충분한 데이터가로드되면 보냅니다
EVT_MEDIA_STATECHANGED : 미디어가 상태를 바꿀 때 보냅니다
이렇게 나와있어 어째뜻 짜보니 영상이 바껴 재생이 되는걸 확인은 했습니다. 근데 궁금한게
if self.testMedia.GetState() == wx.media.MEDIASTATE_STOPPED: 이 조건식이 재생미디어상태가 정지일때 인데... 분명 처음 영상이 멈추면 if i == 1번이 참이되어 self.MOVE[1]를 로드하고 재생이 정지될때까지 돌거 elif가 실행되야하는데 아래 elif문으로 바로 가버리네요 ??
그리고 def play2 함수문이 왜 2번씩 돌아가는지도 모르겠습니다.... play2함수 안에 print문 넣어서 돌려보면 2번씩 반복 실행이되는데 ㅜㅜ 동영상,이미지 패널 만드는게 왜이리 어려울가요?? 혹시 다른 쉽고 좋은 모듈없을가요??
댓글 입력