我在您的代码中找不到问题所在。也许 avi 电影很短并立即停止。或者你的 wxphyton 设置有问题。
所以我使用 wxFormBuilder 创建了一个小应用程序。它具有正确的 wxpython 设置,并且在播放电影后它会不断重启电影。
我已使用此avi movie 进行测试。
这些是启动后立即显示电影的 2 个 python 文件。
wxFormBuilder 生成的代码:
# -*- coding: utf-8 -*-
###########################################################################
## Python code generated with wxFormBuilder (version 3.9.0 Nov 17 2019)
## http://www.wxformbuilder.org/
##
## PLEASE DO *NOT* EDIT THIS FILE!
###########################################################################
import wx
import wx.xrc
###########################################################################
## Class wxfbFrameMain
###########################################################################
class wxfbFrameMain ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
bSizer5 = wx.BoxSizer( wx.VERTICAL )
self.statictext_player = wx.StaticText( self, wx.ID_ANY, u"Player", wx.DefaultPosition, wx.DefaultSize, 0 )
self.statictext_player.Wrap( -1 )
bSizer5.Add( self.statictext_player, 0, wx.ALL, 5 )
self.SetSizer( bSizer5 )
self.Layout()
self.Centre( wx.BOTH )
def __del__( self ):
pass
python 应用程序:
import os
import wx
import wx.media
from wxfbTest import wxfbFrameMain
class FrameMain(wxfbFrameMain):
def __init__(self):
super(FrameMain, self).__init__(None)
avi_file = r'file_example_AVI_480_750kB.avi'
sizer = self.statictext_player.GetContainingSizer()
self.media_ctrl = self.mc = wx.media.MediaCtrl(self, style=wx.SIMPLE_BORDER)
sizer.Add( self.media_ctrl, 50, wx.ALL | wx.EXPAND, 5 )
if os.path.exists(avi_file):
self.media_ctrl.Load(avi_file)
self.Bind(wx.media.EVT_MEDIA_STOP, self._on_media_stop)
self.Show()
self.media_ctrl.Play()
def _on_media_stop(self, event):
self.media_ctrl.Play()
if __name__=='__main__':
app = wx.App()
frame_main = FrameMain()
app.MainLoop()