- 新增 VideoZip.py: 实现了一个简单的图形界面,用于选择文件夹并进行视频转换 - 新增 compress.py: 包含视频转换和文件列表获取功能 - 新增 video_image.py: 实现了视频截图和视频转换功能 - 在 .gitignore 中添加 .DS_Store 文件忽略项
67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
from tkinter import *
|
|
from tkinter import ttk, filedialog, messagebox
|
|
|
|
import os
|
|
import re
|
|
import subprocess as sp
|
|
import sys
|
|
|
|
|
|
# 使用原生的Tk替代TkinterDnD的Tk
|
|
root = Tk()
|
|
frm = ttk.Frame(root, padding=10)
|
|
frm.grid()
|
|
|
|
folder_path = ''
|
|
# 1. 拖拽事件触发区域(改为文件夹选择按钮)
|
|
def select_folder():
|
|
global folder_path
|
|
folder_path = filedialog.askdirectory()
|
|
if folder_path:
|
|
path_listbox.insert(END, folder_path)
|
|
log_text.insert(END, f"添加文件夹: {folder_path}\n")
|
|
|
|
folder_button = ttk.Button(frm, text="选择文件夹", command=select_folder)
|
|
folder_button.grid(column=0, row=0, columnspan=3)
|
|
|
|
# 2. 文件和文件夹路径的列表
|
|
path_listbox = Listbox(frm, height=10, width=50)
|
|
path_listbox.grid(column=0, row=1, columnspan=3)
|
|
|
|
# 3. 进度条
|
|
progress = ttk.Progressbar(frm, orient=HORIZONTAL, length=400, mode='determinate')
|
|
progress.grid(column=0, row=2, columnspan=3)
|
|
|
|
# 4. 日志输出窗口
|
|
log_text = Text(frm, height=10, width=50)
|
|
log_text.grid(column=0, row=3, columnspan=3)
|
|
|
|
|
|
def start_conversion():
|
|
# 开始转换的逻辑
|
|
log_text.insert(END, "开始转换...\n")
|
|
progress['value'] = 0
|
|
for i in range(100):
|
|
progress['value'] += 1
|
|
root.update_idletasks()
|
|
time.sleep(0.05) # 模拟转换进度
|
|
log_text.insert(END, "转换完成\n")
|
|
|
|
global folder_path
|
|
list = os.listdir(folder_path) # 列出文件夹下所有的目录与文件
|
|
for i in range(0, len(list)):
|
|
print("----------------------------")
|
|
path = os.path.join(args[1], list[i])
|
|
if os.path.isfile(path):
|
|
print("FileName: " + list[i])
|
|
matcher1 = re.search(pattern2, list[i])
|
|
if matcher1 != None:
|
|
# get_image_from_video(args[1], list[i])
|
|
conver_video(args[1], list[i])
|
|
|
|
# 5. 按钮
|
|
ttk.Button(frm, text="开始转换", command=start_conversion).grid(column=1, row=4)
|
|
ttk.Button(frm, text="关闭", command=root.destroy).grid(column=2, row=4)
|
|
|
|
root.mainloop()
|