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번씩 반복 실행이되는데 ㅜㅜ 동영상,이미지 패널 만드는게 왜이리 어려울가요?? 혹시 다른 쉽고 좋은 모듈없을가요??

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)