81 lines
2.1 KiB
Python
81 lines
2.1 KiB
Python
|
|
import tkinter as tk
|
||
|
|
from tkinter import simpledialog
|
||
|
|
import pyautogui
|
||
|
|
import keyboard
|
||
|
|
import os
|
||
|
|
|
||
|
|
# 全局变量,用于存储文件夹路径
|
||
|
|
save_folder = ""
|
||
|
|
|
||
|
|
|
||
|
|
# 创建状态显示窗口
|
||
|
|
def create_status_window():
|
||
|
|
window = tk.Tk()
|
||
|
|
window.title("截图工具状态")
|
||
|
|
window.geometry("200x100")
|
||
|
|
window_position = f"+{window.winfo_screenwidth() - 220}+{window.winfo_screenheight() - 150}"
|
||
|
|
window.geometry(window_position)
|
||
|
|
# 设置窗口始终在最前面
|
||
|
|
window.attributes('-topmost', True)
|
||
|
|
|
||
|
|
label = tk.Label(window, text="", font=("Arial", 12))
|
||
|
|
label.pack(expand=True)
|
||
|
|
|
||
|
|
return window, label
|
||
|
|
|
||
|
|
|
||
|
|
# 更新状态信息
|
||
|
|
def update_status(label, text):
|
||
|
|
label.config(text=text)
|
||
|
|
label.update()
|
||
|
|
|
||
|
|
|
||
|
|
# 创建文件夹
|
||
|
|
def create_folder():
|
||
|
|
global save_folder
|
||
|
|
root = tk.Tk()
|
||
|
|
root.withdraw() # 隐藏主窗口
|
||
|
|
folder_name = simpledialog.askstring("输入", "请输入文件夹名称:", parent=root)
|
||
|
|
if folder_name:
|
||
|
|
save_folder = os.path.join(os.getcwd(), folder_name)
|
||
|
|
if not os.path.exists(save_folder):
|
||
|
|
os.makedirs(save_folder)
|
||
|
|
update_status(status_label, "文件夹创建成功")
|
||
|
|
else:
|
||
|
|
update_status(status_label, "文件夹已存在")
|
||
|
|
root.destroy()
|
||
|
|
|
||
|
|
|
||
|
|
# 截屏并保存
|
||
|
|
def take_screenshot():
|
||
|
|
if not save_folder:
|
||
|
|
update_status(status_label, "请先创建文件夹")
|
||
|
|
return
|
||
|
|
|
||
|
|
screen_width, screen_height = pyautogui.size()
|
||
|
|
left = screen_width // 2 - 400
|
||
|
|
top = 0
|
||
|
|
right = screen_width // 2 + 400
|
||
|
|
bottom = screen_height
|
||
|
|
|
||
|
|
screenshot = pyautogui.screenshot(region=(left, top, right - left, bottom - top))
|
||
|
|
file_path = os.path.join(save_folder, f"screenshot_{len(os.listdir(save_folder)) + 1}.png")
|
||
|
|
screenshot.save(file_path)
|
||
|
|
update_status(status_label, "截图成功")
|
||
|
|
|
||
|
|
|
||
|
|
# 主函数
|
||
|
|
def main():
|
||
|
|
global status_window, status_label
|
||
|
|
status_window, status_label = create_status_window()
|
||
|
|
|
||
|
|
keyboard.add_hotkey('F8', create_folder)
|
||
|
|
keyboard.add_hotkey('F9', take_screenshot)
|
||
|
|
|
||
|
|
update_status(status_label, " ready")
|
||
|
|
status_window.mainloop()
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|