|
Python鐢熸垚鎸囧畾鍚庣紑鐨勬枃浠-绋嬪簭 鏈缁堢増浠g爜锛
import os import tkinter as tk from tkinter import ttk, messagebox
def select_parameters(): global confirmed, suffix, prefix, num_files confirmed = False # 鍒濆鍖栫‘璁ょ姸鎬
def on_entry_focus_in(event): if entry_prefix.get() == placeholder_text: entry_prefix.delete(0, tk.END) entry_prefix.configure(style='TEntry') def on_entry_focus_out(event): if not entry_prefix.get(): entry_prefix.insert(0, placeholder_text) entry_prefix.configure(style='Placeholder.TEntry') def validate_inputs(): """楠岃瘉鎵鏈夎緭鍏ユ槸鍚︽湁鏁""" # 楠岃瘉闆嗘暟杈撳叆 try: num = int(entry_num.get()) if not (1 <= num <= 99): raise ValueError except ValueError: messagebox.showerror("閿欒", "璇疯緭鍏1-99涔嬮棿鐨勬湁鏁堟暣鏁") return False # 楠岃瘉鑺傜洰鍚嶇О杈撳叆 raw_prefix = entry_prefix.get() if raw_prefix.strip() == "" or raw_prefix == placeholder_text: messagebox.showerror("閿欒", "璇疯緭鍏ユ湁鏁堢殑鑺傜洰鍚嶇О") return False return True def on_confirm(): """纭鎸夐挳澶勭悊鍑芥暟""" global confirmed, suffix, prefix, num_files if not validate_inputs(): return # 杈撳叆楠岃瘉澶辫触鏃朵笉鎵ц鍚庣画鎿嶄綔 # 鑾峰彇鏈夋晥杈撳叆鍊 num_files = int(entry_num.get()) raw_prefix = entry_prefix.get().strip() # 澶勭悊闈炴硶瀛楃锛堟柊澧炰唬鐮侊級 invalid_chars = r'\/:*?"<>|' # Windows绯荤粺闈炴硶瀛楃 processed_prefix = raw_prefix.rstrip('.E') # 鍘婚櫎灏鹃儴.E processed_prefix = ''.join([c for c in processed_prefix if c not in invalid_chars]) # 杩囨护闈炴硶瀛楃 # 纭繚澶勭悊鍚庡悕绉版湁鏁堬紙鏂板楠岃瘉锛 if not processed_prefix: messagebox.showerror("閿欒", "鍚嶇О鍖呭惈杩囧闈炴硶瀛楃锛岃杈撳叆鏈夋晥鍚嶇О") return prefix = processed_prefix # 鏇存柊鍏ㄥ眬鍙橀噺 suffix = ext_var.get() confirmed = True root.quit() root.destroy() def on_exit(): """閫鍑烘寜閽鐞嗗嚱鏁""" global confirmed confirmed = False root.quit() root.destroy() # 鍒涘缓涓荤獥鍙 root = tk.Tk() root.title("鏂囦欢鐢熸垚璁剧疆") root.geometry("420x220") root.resizable(False, False)
# 鏍峰紡閰嶇疆 style = ttk.Style() style.configure('Placeholder.TEntry', foreground='gray') # 涓诲鍣 frame = ttk.Frame(root, padding=12) frame.pack(expand=True, fill='both')
# 鏂囦欢鍚嶅墠缂杈撳叆缁勪欢 placeholder_text = "璇疯緭鍏ユ枃浠跺悕绉" ttk.Label(frame, text="鑺傜洰鍚嶇О锛", font=('寰蒋闆呴粦', 9)).grid(row=0, column=0, sticky='w', pady=3) entry_prefix = ttk.Entry(frame, width=28, style='Placeholder.TEntry') entry_prefix.insert(0, placeholder_text) entry_prefix.grid(row=0, column=1, columnspan=2, sticky='ew', padx=5) entry_prefix.bind('<FocusIn>', on_entry_focus_in) entry_prefix.bind('<FocusOut>', on_entry_focus_out) # 绀轰緥鎻愮ず ttk.Label(frame, text="绀轰緥锛氳緭鍏'HH' 鈫 鐢熸垚 HH.E01.mkv", foreground="gray", font=('寰蒋闆呴粦', 8)).grid(row=1, column=1, sticky='w')
# 闆嗘暟杈撳叆缁勪欢 ttk.Label(frame, text="鐢熸垚闆嗘暟锛", font=('寰蒋闆呴粦', 9)).grid(row=2, column=0, sticky='w', pady=3) entry_num = ttk.Entry(frame, width=8) entry_num.insert(0, '10') entry_num.grid(row=2, column=1, sticky='w', padx=5) ttk.Label(frame, text="闆嗭紙1-99锛", font=('寰蒋闆呴粦', 9)).grid(row=2, column=2, sticky='w')
# 鏂囦欢鏍煎紡閫夋嫨缁勪欢 ttk.Label(frame, text="瑙嗛鏍煎紡锛", font=('寰蒋闆呴粦', 9)).grid(row=3, column=0, sticky='w', pady=10) ext_var = tk.StringVar(value='.mp4') btn_frame = ttk.Frame(frame) btn_frame.grid(row=3, column=1, columnspan=2, sticky='w') ttk.Radiobutton(btn_frame, text="MP4", variable=ext_var, value='.mp4').pack(side='left', padx=6) ttk.Radiobutton(btn_frame, text="MKV", variable=ext_var, value='.mkv').pack(side='left', padx=6)
# 鎿嶄綔鎸夐挳瀹瑰櫒 btn_container = ttk.Frame(frame) btn_container.grid(row=4, column=0, columnspan=3, pady=12, sticky='e') # 閫鍑烘寜閽 ttk.Button(btn_container, text="閫鍑虹▼搴", command=on_exit, width=10).pack(side='right', padx=5) # 鐢熸垚鎸夐挳 ttk.Button(btn_container, text="绔嬪嵆鐢熸垚", command=on_confirm, width=10).pack(side='right')
root.mainloop()
# 鍒濆鍖栧叏灞鍙橀噺 confirmed = False suffix = '.mkv' prefix = '鏈懡鍚嶈妭鐩' num_files = 1
# 杩愯鍙傛暟璁剧疆鐣岄潰 select_parameters()
# 鏍规嵁鐢ㄦ埛閫夋嫨鎵ц鎿嶄綔 if confirmed: # 鍒涘缓鐩爣鏂囦欢澶癸紙璺緞宸蹭慨鏀癸級 folder = f"D:/鐢佃鍓/{prefix}(2025-1)" # 鍔ㄦ佺敓鎴愯矾寰勶紝鏂板鍥哄畾鍚庣紑 os.makedirs(folder, exist_ok=True)
# 鎵归噺鍒涘缓鏂囦欢 created_count = 0 for i in range(1, num_files + 1): try: filename = f"{prefix}.E{i:02d}{suffix}" filepath = os.path.join(folder, filename) with open(filepath, 'w') as file: created_count += 1 except Exception as e: print(f"⚠️ 鍒涘缓鏂囦欢 {filename} 澶辫触: {str(e)}")
# 杈撳嚭缁撴灉鎶ュ憡 print(f"🎉 鎴愬姛鍒涘缓 {created_count} 涓棰戞枃浠讹紒\n" f"📁 淇濆瓨璺緞锛歿os.path.abspath(folder)}\n" f"📄 鍛藉悕鏍煎紡锛歿prefix}.E01{suffix}") else: print("鎿嶄綔宸插彇娑堬紝鏈敓鎴愪换浣曟枃浠躲")
END
|