###前提・実現したいこと
下記それぞれのPATHに30fpsの画像(YYYYMMDD_HHMMSS.mmm.jpg ...)が1000枚ずつ格納されている。
'./src/img/0/'
'./src/img/1/'
'./src/img/2/'
'./src/img/3/'
この格納された画像PATHごとにViewerを作り、4つのViewerで30fpsの動画再生を同時に行う。
###発生している問題・エラーメッセージ
一つの画像Viewerでは動画再生ができたものの複数Windowを作り 同時再生するためにはどのようにすべきかわからない。
###該当のソースコード
python
1# -*- coding: UTF-8 -* 2from tkinter import * 3import tkinter 4import PIL.Image 5import PIL.ImageTk 6import os 7# import pygame 8# import re, sys 9 10# フレーム速度 [ms] 11TIME = 33 12# ファイル格納場所 13PATH = './src/img/0/' 14 15class App(Frame): 16 def __init__(self, master=None): 17 Frame.__init__(self, master) 18 # ディクレクトリ内のファイルのリストを取得する 19 self.ls = os.listdir(PATH) 20 21 # ディクレクトリ内のファイルリストで余分なファイルを削除 22 # b = self.ls.remove(os.path.basename(__file__)) 23 24 # numはリストの番号情報を保持 25 self.num = 0 26 # startedは再生しているかどうかを保持 27 self.started = False 28 29 # フレームの設定 30 self.la = Label(self) 31 self.la.pack() 32 self.pack() 33 self.bind_all('<1>', self.play) 34 self.bind_all('<3>', self.reset) 35 self._setting() 36 37 def reset(self, event): 38 self.num = 0 39 if not self.started: 40 self._setting() 41 42 def play(self, event): 43 # 右クリックでスタートとストップを切り替える 44 if self.started: 45 self.started = False 46 else: 47 self._setting() 48 self.after(TIME, self.start) 49 self.started = True 50 51 def start(self): 52 if self.started: 53 self.num += 1 54 if self.num < len(self.ls): 55 self._setting() 56 self.after(TIME, self.start) 57 else: 58 self.num = 0 59 self.started = False 60 61 def _setting(self): 62 # 画像を読み込み、タイトルを変える 63 self.image = PIL.ImageTk.PhotoImage(PIL.Image.open(PATH + self.ls[self.num])) 64 self.la.configure(image=self.image) 65 self.master.title(self.ls[self.num]) 66 67if __name__ == '__main__': 68 app = App() 69 app.mainloop()
###試したこと
###補足情報(言語/FW/ツール等のバージョンなど)
IDE:pycharm
OS:Windows
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/22 00:13