先给你们看看属性,里面含有打包版。
接下来大家可以看看演示,详见下面的动图
本次更新了
- 界面(像右键菜单那样)
- 界面动画(淡入)
- 启动界面
- 截图路径区分(按时间,格式为“YYYYMMDD HHMMSS”)
下载
打包版
由于人在学校,没法登录GitHub或者网盘,所以打包版发不了,预计这个周末发
Python版
#运行启动界面必须导入的内容 import win32api,win32con import tkinter as tk import tkinter.ttk as ttk import time from PIL import Image,ImageTk #获取屏幕尺寸 scr_w=win32api.GetSystemMetrics(win32con.SM_CXSCREEN) scr_h=win32api.GetSystemMetrics(win32con.SM_CYSCREEN) #启动界面 swin=tk.Tk() swin.geometry('500x200+'+str(int(scr_w/2-500/2))+'+'+str(int(scr_h/2-200/2))) swin.title('SaveScreen V1.0 (Starting...)') swin.overrideredirect(True) img_open = Image.open("./icon4swin.png") icon_img = ImageTk.PhotoImage(img_open) tk.Label(swin,image=icon_img).pack(side=tk.LEFT,padx=30) tk.Label(swin,text='SaveScreen',font=('微软雅黑',40)).pack(fill=tk.X,pady=20) tk.Label(swin,text='Version 1.0').pack(fill=tk.X) tk.Label(swin,text='2022 By 人工智障').pack(fill=tk.X) alpha=0 for i in range(0,50+1): swin.attributes('-alpha', alpha) alpha+=0.02 time.sleep(0.02) swin.update() swin.update()#此处只更新一次窗口内容,以免卡死后面的内容 import pyautogui import cv2 import os import webbrowser from system_hotkey import SystemHotkey nowtime = time.strftime("%Y%m%d %H%M%S", time.localtime()) if not os.path.exists("./截图/"): #创建截图目录 os.mkdir("./截图/") if not os.path.exists("./截图/"+nowtime+"/"): #创建当前截图目录 os.mkdir("./截图/"+nowtime+"/") #图像计数器 img_count=0 #通知 def toast(msg='通知(内容未知)'): print(msg) #保存图片的函数 def save_screen(event=''): global img_count print(event) img_count+=1 img = pyautogui.screenshot(region=[0,0,scr_w,scr_h]) # x,y,w,h img.save('./截图/'+nowtime+"/"+str(img_count)+'.png') #toaster.show_toast('已保存第 '+str(img_count)+' 张截图', '已保存截图至 '+'./截图/'+str(img_count)+'.png', duration=1) toast('已保存第 '+str(img_count)+' 张截图') def quit(event=''): win.destroy() exit() #显示菜单 def menu(event='',middle=False): global scr_w,scr_h x,y=pyautogui.position() win.deiconify() if middle: pos='200x200+'+str((int((scr_w-200)/2)))+'+'+str((int((scr_h-200)/2))) elif not middle: pos='200x200+'+str(x+15)+'+'+str(y+15) win.geometry(pos) alpha=0 for i in range(0,5+1): win.attributes('-alpha', alpha) alpha+=0.2 time.sleep(0.03) win.update() #热键 hk = SystemHotkey() hk.register(('control', 'alt', 's'), callback=save_screen) hk_esc = SystemHotkey() hk_esc.register(('control', 'alt', 'q'), callback=quit) hk_esc = SystemHotkey() hk_esc.register(('control', 'alt', 'm'), callback=menu) time.sleep(1)#等待一秒,让启动界面有点存在感 swin.destroy()#准备工作完成后,销毁启动界面 win=tk.Tk() win.title('SaveScreen V1.0') win.overrideredirect(True) #win.geometry('200x100') #菜单界面部分 tk.Label(win,text='菜单').pack(fill=tk.X) tk.Button(text='立即截图(Ctrl+Alt+S)', bg='lightgrey',bd=0, command=save_screen).pack(fill=tk.X) tk.Button(text='退出(Ctrl+Alt+Q)', bg='lightgrey',bd=0, command=quit).pack(fill=tk.X) tk.Button(text='隐藏菜单', bg='lightgrey',bd=0, command=win.withdraw).pack(fill=tk.X) tk.Button(text='显示菜单(Ctrl+Alt+M)', bg='lightgrey',bd=0, command=menu,state=tk.DISABLED).pack(fill=tk.X) ttk.Separator(win,orient=tk.HORIZONTAL).pack(fill=tk.X) tk.Button(text='关于作者', bg='lightgrey',bd=0, command=lambda:webbrowser.open("https://www.cnblogs.com/totowang/")).pack(fill=tk.X) tk.Label(win,text='SaveScreen V1.0',fg='grey').pack(fill=tk.X) tk.Label(win,text='2022 By 人工智障',fg='grey').pack(fill=tk.X) menu(middle=True) #toaster.show_toast('按Ctrl+Alt+S来快速保存截图', '完美!快捷键注册成功!通知消失后就可以按下Ctrl+alt+S来快速保存截图了。(按Ctrl+Alt+Q来退出程序)') toast('完美!快捷键注册成功!可以按下Ctrl+alt+S来快速保存截图了。(按Ctrl+Alt+Q来退出程序)') win.mainloop()