2017-06-16 27 views
0
# -*- 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ステートメントに適用されます。どうしてこれなの?

+0

Peneal Sizerとは何ですか、どこで入手できますか? –

答えて

0

self.folderSerachをファイルサフィックスのリストで上書きします。

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 mediaPlay(self, event): 
    if self.folderSerach[self.mediaCounter].endswith('.jpg'): 
     self.media.Play() 
     time.sleep(10) 
     print('test1') 
    else: 
     self.media.Play() 
     print('test2') 

self.folderSerachのこの上書きは、あなたが、少なくとも((そのコード除く)また

os.listdir()def medialoopで再びそれを再ロードするために行っていることを意味しLinuxでは)os.listdir('./')
そして、使用されていない関数を削除してください。

+0

ありがとうございます。問題は解決されました。私はあなたについてとても学んだ。 :) –

+0

こんにちは私は別の質問があります。 短い「time.sleep」で画像を停止するとよいです。あなたの教えにもう一度感謝します。 Linuxに長いtime.sleepを与えると、プロセスがハングするか、フレーム画面が黒くなることがあります。この場合、Linuxシステムを設定する必要がありますか?それとも、システムパフォーマンスの問題ですか? 'time.sleep'以外の時間だけ画像を停止する機能がありますか? また、ブランチコードを回してイメージ - >ビデオ - > ..->に行く過程でフレーム全体のちらつきが正常であるかどうかを知りたいと思います。 –

関連する問題