python
1import tkinter as tk 2import tkinter.filedialog as tkfd 3import subprocess 4 5# グローバル変数 6acv_path = "" 7f_path_list = [] 8 9### この下に関数を書く ### 10 11def select_file(): 12 global f_cont, f_path_list 13 14 f_conf = [('MOV file (*.mov)', '*mov'), ('AVI file (*.avi)', '*.avi'),('MP4 file (*.mp4)', '*.mp4')] 15 paths = tkfd.askopenfiles(filetypes=f_conf) 16 for f in paths: 17 f_path_list.append(f.name) 18 # Insert to Message List 19 msgList.insert(tk.END, f_path_list) 20 # Insert Input Path TextBox 21 inpFld.insert(tk.END, f_path_list) 22 23 24def get_mediainfo(f_path_list): 25 # 変数を定義する 26 targetfile = f_path_list 27 # コマンドを定義して、変数を挿入する 28 cmd = 'ffprobe -i {}'.format(targetfile) 29 # コマンドを実行する 30 result = subprocess.run(cmd, shell=True) 31 msgList.insert(tk.END, result) 32 33 34 35 36 37def close_window(): 38 win.destroy() 39 40 41 42if __name__ == "__main__": 43 # Main Window 44 win = tk.Tk() 45 # Window Title 46 win.title("MediaInfo App") 47 # Window Size 48 win.geometry("500x500") 49 # Window Resizable 50 #win.resizable(0,0) 51 # Window Background 52 win.configure(bg="#52514F") 53 54### この下に描画内容を書く ### 55 #メインフレーム 56 mFrm = tk.Frame(win) 57 mFrm.configure(bg="#52514F") 58 mFrm.pack(padx=3, pady=3, fill="both", expand=1) 59 60 # 通知リスト 61 msgList = tk.Listbox(mFrm) 62 msgList.configure(height=20, width=50) 63 msgList.pack(padx=10, pady=10) 64 65 # ボタン中央揃え用のフレーム 66 InpFrm = tk.LabelFrame(mFrm) 67 InpFrm.configure(text="Input Settings", fg="white", bg="#52514F", padx="20", pady="10") 68 InpFrm.pack(pady=5) 69 70 71 # Input Path ラベル 72 inpTxt = tk.Label(InpFrm) 73 inpTxt.configure(text="Input Path | 入力", fg="white", bg="#52514F", font=('Helvetica', 10)) 74 inpTxt.pack(side="left", padx=5) 75 76 # Input Path 表示 77 inpFld = tk.Entry(InpFrm) 78 inpFld.configure(fg="black", highlightbackground="#52514F") 79 inpFld.pack(side="left", padx=5) 80 81 # ファイル選択ボタン 82 inpBtn = tk.Button(InpFrm) 83 inpBtn.configure(text="Select File", command=select_file) 84 inpBtn.pack(side="right", padx=5) 85 86 # Exitボタン 87 extBtn = tk.Button(mFrm) 88 extBtn.configure(text="Exit", command=close_window) 89 extBtn.pack(side="bottom", padx=5,pady=10) 90 91 #アイコン設定 92 icon_photo = tk.PhotoImage(file = '/Volumes/UnsungHero/Python/IVTC_tool/film.png') # icon file | アイコンファイル 93 win.iconphoto(False, icon_photo) # Sets the icon | アイコン 94 # 描画 95 win.mainloop()
読み込んだ動画ファイルをffprobeを使って、ファイルの情報を取得しMessageListに表示したい。
def get_mediainfo(f_path_list): # 変数を定義する targetfile = f_path_list # コマンドを定義して、変数を挿入する cmd = 'ffprobe -i {}'.format(targetfile) # コマンドを実行する result = subprocess.run(cmd, shell=True) msgList.insert(tk.END, result)
def select_file():内のf_path_list(ファイルパス)をdef get_mediainfoで参照したいと思っていますが、ファイルを読み込んでもffproveが実行されず悩んでいます。
**追記**
import tkinter as tk import tkinter.filedialog as tkfd import subprocess # グローバル変数 acv_path = "" f_path_list = [] ### この下に関数を書く ### def select_file(): global f_cont, f_path_list f_conf = [('MOV file (*.mov)', '*mov'), ('AVI file (*.avi)', '*.avi'),('MP4 file (*.mp4)', '*.mp4')] paths = tkfd.askopenfiles(filetypes=f_conf) for f in paths: f_path_list.append(f.name) # Insert to Message List msgList.insert(tk.END, f_path_list) # Insert Input Path TextBox inpFld.insert(tk.END, f_path_list) def get_mediainfo(): # 変数を定義する targetfile = f_path_list # コマンドを定義して、変数を挿入する cmd = 'ffprobe -i {}'.format(targetfile) # コマンドを実行する result = subprocess.run(cmd, shell=True) msgList.insert(tk.END, result)
実行ボタンを作成し、情報取得を実行すると
CompletedProcess(args="ffprobe -i ['/Python/IMG_1138.MOV']", returncode=1)
というエラーが出ました。
回答2件
あなたの回答
tips
プレビュー