Preview Frame内の白バックのText BoxにInput Pathで選択した動画ファイルのMeida Infoを表示したいのですが、他のクラスで入手したファイルパスを他のクラスに引き継ぐ方法とどうすればffmpegで入手したMedia Infoの情報を表示すればいいのかがわかりません。
Python
1import tkinter as tk 2from tkinter import filedialog 3import os 4import sys 5import subprocess 6 7win = tk.Tk() 8win.title("IVT Transcode app") 9 10win.geometry("700x700") #Turn on for locked Resolution 11win.configure(background='#52514F') # DARK MODE! | ダークモード! 12icon_photo = tk.PhotoImage(file = '/Volumes/UNSUNG HERO/PYTHON/IVTC_tool/film.png') # icon file | アイコンファイル 13win.iconphoto(False, icon_photo) # Sets the icon | アイコン 14 15 16# ----Dictionaries & Variables | 辞書と変数---- 17output_format = ['.MP4', '.AVI', '.MOV', '.MXF'] 18ffmpeg_path = open(os.path.join(sys.path[0], "ffmpeg/ffmpeg"), "r") 19ffprobe_path = open(os.path.join(sys.path[0], "ffmpeg/ffprobe"), "r") 20 21## Input Settings ## 22class FirstFrame: 23 def __init__(self,master): 24 FrameOne = tk.LabelFrame(master, text="Input Settings", fg="white", bg="#52514F", padx="5", pady="5") 25 FrameOne.grid(column=2, row=2, padx='20', pady='5', sticky='nsew') 26 27 self.file_dialog_input = None 28 self.Text_Input_Path = tk.Label(FrameOne, text="Input Path ", 29 fg="white", bg="#52514F", font=('Helvetica', 10)) 30 self.Text_Input_Path.grid(column=0, row=0, sticky='w') 31 self.Field_Input_Path = tk.Entry(FrameOne, fg="black", highlightbackground="#52514F") 32 self.Field_Input_Path.grid(column=1, row=0, sticky='nsew') 33 self.Button_Input_Path = tk.Button(FrameOne, text="Open File", command=self.file_dialog_input_path, highlightbackground="#52514F", font=('Helvetica', 10)) 34 self.Button_Input_Path.grid(column=2, row=0, sticky='e') 35 36 def file_dialog_input_path(self): 37 self.file_dialog_input = tk.filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes=[('MOV file (*.mov)', '*mov'), ('AVI file (*.avi)', '*.avi'),('MP4 file (*.mp4)', '*.mp4')]) 38 self.Field_Input_Path.insert(tk.END, self.file_dialog_input) 39 print (self.file_dialog_input) 40 41 42## Output Settings ## 43class SecondFrame: 44 def __init__(self,master): 45 FrameTwo = tk.LabelFrame(master, text="Output Settings", fg="white", bg="#52514F", padx="5", pady="5") 46 FrameTwo.grid(column=2, row=3, padx='20', pady='5', sticky='nsew') 47 48 self.file_dialog_output = None 49 self.Text_Output_Path = tk.Label(FrameTwo, text="Output Path", fg="white", bg="#52514F", font=('Helvetica', 10)) 50 self.Text_Output_Path.grid(column=0, row=0, sticky='w') 51 self.Text_Output_Name = tk.Label(FrameTwo, text="Output Filename", fg="white", bg="#52514F", font=('Helvetica', 10)) 52 self.Text_Output_Name.grid(column=0, row=1, sticky='w') 53 self.Field_Output_Path = tk.Entry(FrameTwo, fg="black", highlightbackground="#52514F") 54 self.Field_Output_Path.grid(column=1, row=0, sticky='nsew') 55 self.Field_Output_Name = tk.Entry(FrameTwo, fg="black", highlightbackground="#52514F") 56 self.Field_Output_Name.grid(column=1, row=1, sticky='nsew') 57 self.Button_Output_Path = tk.Button(FrameTwo, text="Select Path", command=self.file_dialog_output_path, highlightbackground="#52514F", pady='2', font=('Helvetica', 10)) 58 self.Button_Output_Path.grid(column=2, row=0, sticky='nsew') 59 60 #Extention Option | 拡張子選択 61 self.Extension_Value = tk.StringVar() 62 self.Extension_Value.set(".MOV") # default value as MOV | デフォルトMOV 63 self.Extension_Option = tk.OptionMenu(FrameTwo, self.Extension_Value, *output_format) 64 self.Extension_Option.config(bg='#52514F', font=('Helvetica', 10), pady='2') 65 self.Extension_Option.grid(column=2, row=1, sticky='nsew') 66 67 68 69 def file_dialog_output_path(self): 70 self.file_dialog_output = tk.filedialog.askdirectory(initialdir = "/",title = "Select path") 71 self.Field_Output_Path.insert(tk.END, self.file_dialog_output) 72 print (self.file_dialog_output) 73 #TextOutputText = tk.Text(FifthFrame, height=8, width=45, bg="grey", highlightbackground='grey') 74 #TextOutputText.delete('1.0', tk.END) 75 #TextOutputText.insert(tk.END, self.file_dialog_output) 76 77## Buttoun Settings## 78class ThirdFrame: 79 def __init__(self,master): 80 FrameThree = tk.LabelFrame(master, text="Button", fg="white", bg="#52514F", pady="5", padx="5") 81 FrameThree.grid(column=3, row=2, rowspan=2, padx='20', pady='5', sticky='nsew') 82 83 #Analyze 84 self.file_dialog_input = None 85 self.ButtonOne = tk.Button(FrameThree,text="Analyze (MediaInfo)", highlightbackground="#52514F", padx=3, pady=3,) 86 self.ButtonOne.grid(column=2, row=0, sticky='nw', pady=1, padx=1) 87 #Preview 88 ButtonTwo = tk.Button(FrameThree, text="Preview", highlightbackground="#52514F", padx=3, pady=3) 89 ButtonTwo.grid(column=2, row=1, sticky='nw', pady=1, padx=1) 90 #Simple Transcode 91 Button_ffm_simple = tk.Button(FrameThree, text="Simple Transcode", highlightbackground="#52514F", padx=3, pady=3) 92 Button_ffm_simple.grid(column=2, row=2, sticky='nw', pady=1, padx=1) 93 94 95## Progress Settings ## 96class ForthFrame: 97 def __init__(self,master): 98 FrameFour = tk.LabelFrame(master, text="Progress", fg="white", bg="#52514F", padx="5", pady="5") 99 FrameFour.grid(column=2, columnspan=2, row=4, padx='20', pady='5', sticky='nsew') 100 101 #Progress | 進捗ウィンドウの設定 102 TextOutputText = tk.Text(FrameFour, height=3, width=90, bg="grey", highlightbackground='grey') 103 TextOutputText.grid(column=1, columnspan=2, row=1, sticky='nsew', pady=5, padx=5) 104 ClearButton = tk.Button(FrameFour, text="Clear", highlightbackground="#52514F", padx=1, pady=1) 105 ClearButton.grid(column=2, row=2, sticky='e', pady=1, padx=1) 106 107##Preview Window Settings ## 108class FifthFrame: 109 def __init__(self,master): 110 FrameFive = tk.LabelFrame(master, text="Preview", fg="white", bg="#52514F", padx="5", pady="5") 111 FrameFive.grid(column=2, columnspan=2, row=1, padx='20', pady='5', sticky='nsew') 112 113 Preview_Start = tk.Button(FrameFive, text="start", fg="black", bg="#52514F", font=('Helvetica', 10)) 114 Preview_Start.grid(column=1, row=4, sticky='nsew', pady=5, padx=5) 115 Preview_ad1f = tk.Button(FrameFive, text=" < ", fg="black", bg="#52514F", font=('Helvetica', 10)) 116 Preview_ad1f.grid(column=0, row=4, sticky='e', pady=5, padx=5) 117 Preview_bc1f = tk.Button(FrameFive, text=" > ", fg="black", bg="#52514F", font=('Helvetica', 10)) 118 Preview_bc1f.grid(column=2, row=4, sticky='w', pady=5, padx=5) 119 120 121 #Cavas Area | キャンバスエリア 122 canvas = tk.Canvas(FrameFive, width = 320, height = 240)#Canvasの作成 123 canvas.create_rectangle(0, 0, 320, 240, fill = 'blue')#塗りつぶし 124 canvas.place(x=0, y=0)#Canvasの配置 125 126 canvas.grid(column=0, columnspan=3, row=0, rowspan=4, pady=5, padx=5) 127 128 #Media Infomation | メディア情報 129 self.MediaInfoOut = tk.Text(FrameFive, height=20, width=40, bg="white", highlightbackground='grey') 130 self.MediaInfoOut.grid(column=3, row=1, rowspan=5, sticky='nsew', pady=5, padx=10) 131 132 def __init__(self,master): 133 # 変数を定義する 134 targetfile = file_dialog_input 135 # コマンドを定義して、変数を挿入する 136 command = 'ffprobe -i {}'.format(targetfile) 137 # コマンドを実行する 138 subprocess.run(command, shell=True) 139 140 141 142 143 144f1 = FirstFrame(win) 145f2 = SecondFrame(win) 146f3 = ThirdFrame(win) 147f4 = ForthFrame(win) 148f5 = FifthFrame(win) 149 150 151#Start the GUI | GUI開始 152win.mainloop()
Class FirstFrameで入手したInput_Pathを
def file_dialog_input_path(self): self.file_dialog_input = tk.filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes=[('MOV file (*.mov)', '*mov'), ('AVI file (*.avi)', '*.avi'),('MP4 file (*.mp4)', '*.mp4')]) self.Field_Input_Path.insert(tk.END, self.file_dialog_input) print (self.file_dialog_input)
Class FifthFrameのtargetfileを変数として使いたい。
def __init__(self,master): # 変数を定義する targetfile = file_dialog_input # コマンドを定義して、変数を挿入する command = 'ffprobe -i {}'.format(targetfile) # コマンドを実行する subprocess.run(command, shell=True)
Class 継承をする際のコードの書き方がいまいちわからず困っております。
どなたかご教示いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。