ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SaveScreen V1.0更新,界面来了

2022-02-21 16:03:05  阅读:232  来源: 互联网

标签:截图 swin 界面 img win V1.0 tk SaveScreen pack


先给你们看看属性,里面含有打包版。

接下来大家可以看看演示,详见下面的动图

 

 本次更新了

  • 界面(像右键菜单那样)
  • 界面动画(淡入)
  • 启动界面
  • 截图路径区分(按时间,格式为“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()

 

标签:截图,swin,界面,img,win,V1.0,tk,SaveScreen,pack
来源: https://www.cnblogs.com/TotoWang/p/save_screen_v1-0.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有