# -*- coding: utf-8 -*-
import wx, wx.media
import sqlite3
import os
import time
class MainFream(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.leftPanel = wx.Panel(self, size=(0,0))
self.media = wx.media.MediaCtrl(self,
#szBackend=wx.media.MEDIABACKEND_GSTREAMER,
szBackend=wx.media.MEDIABACKEND_WMP10,
size=(0,0),
style=wx.SIMPLE_BORDER | wx.ALIGN_CENTER_HORIZONTAL)
#Penael Sizer
self.hBoxSizer = wx.BoxSizer(wx.HORIZONTAL)
self.hBoxSizer.Add(self.leftPanel, 1, wx.EXPAND, 1)
self.hBoxSizer.Add(self.media, 1, wx.EXPAND, 1)
self.SetSizer(self.hBoxSizer)
#Video Image File Folder Serach & Load Play
self.mediaCounter = 0
self.folderSerach = [f for f in os.listdir() if f.endswith(('.wmv','mp4','avi','.jpg'))]
self.media.Load(self.folderSerach[self.mediaCounter])
self.media.Bind(wx.media.EVT_MEDIA_LOADED, self.mediaPlay, self.media)
self.media.Bind(wx.media.EVT_MEDIA_FINISHED, self.mediaLoop, self.media)
def auto(self):
self.TextShow()
wx.CallLater(1000, self.auto) #60min
def mediaPlay(self, event):
self.folderSerach = [x for f in os.listdir() for x in os.path.splitext(f) if x.endswith(('.wmv','mp4','avi','.jpg'))]
for i in self.folderSerach:
if i == '.jpg':
self.media.Play()
time.sleep(10)
print('test1')
else:
self.media.Play()
print('test2')
def mediaLoop(self, evnet):
self.media.Stop()
self.mediaCounter += 1
if self.mediaCounter > len(self.folderSerach) -1: self.mediaCounter = 0
self.folderSerach = [f for f in os.listdir() if f.endswith(('.wmv','mp4','avi','.jpg'))]
self.media.Load(self.folderSerach[self.mediaCounter])
if __name__ == '__main__':
app = wx.App()
fream = MainFream()
fream.Show(True)
app.MainLoop()
我正在創建一個面板來搜索和播放jpg,avi,mp4等文件夾。Wxpython wx.media視頻和圖像控制有問題
在def mediaPlay()
部分,jpg使圖片文件可見10秒,並且電影被播放直到播放時間結束。
問題是,if = '.jpg'
,只有一個print ('test1')
聲明需要執行,'test2'將同時顯示。所以time.sleep()
適用於if or else
聲明。爲什麼是這樣?
什麼是Peneal Sizer,我可以在哪裏買到? –