代码如下:
import pyautogui as pgui
import keyboard,_thread,datetime,os,time
from tkinter import *
def replacechar(string,char1,char2): #将一个字符替换成另一个字符(文件名中不允许/字符,此函数可以把它替换掉)
result_string=""
for i in range(len(string)):
if string[i]==char1:
result_string+=char2
else:
result_string+=string[i]
return result_string
#Tkinter界面
root=Tk()
root.title("按F2截图")
root.geometry("450x300")
root.resizable(False,False)
title=Label(root,text="按F2截图",bg="white",font=("华文仿宋",20),width=40,height=1)
title.pack(side=TOP)
label=Label(root,text="程序运行时,按F2截图,存储的图片会在screenshots文件夹。",width=50,height=1)
label.pack(side=TOP)
label1=Label(root,text="",font=("Arial",7),width=60,height=1)
label1.pack(side=BOTTOM)
label_text=["","",""]
label_textvar=[StringVar(),StringVar(),StringVar()]
labels=[None,None,None]
for i in range(3):
labels[2-i]=Label(root,bg="yellow",width=55,height=1,textvariable=label_textvar[i])
labels[2-i].pack(side=BOTTOM)
label2=Label(root,text="最近三张截图:↓",width=55,height=1)
label2.pack(side=BOTTOM)
def loop(): #检测是否按下F2并截图的线程
while True:
try:
if keyboard.is_pressed("F2"):
filename=replacechar("screenshots/screenshot_"+str(datetime.datetime.now())+".png",":","_") #每次截图前获取文件名
pgui.screenshot().save(filename) #截图并保存
label_text[0]=label_text[1]
label_text[1]=label_text[2]
label_text[2]=filename
for i in range(3):
label_textvar[i].set(label_text[i])
except Exception as e:
print(str(e))
time.sleep(0.1) #为了防止电脑卡顿
_thread.start_new_thread(loop,())
root.mainloop()
使用此程序时,在电脑任意位置按F2,都可以截图。
运行此程序前,先在旁边创建一个名叫“screenshots”的文件夹,截图会存在那里。
此程序主要运用了pyautogui的截图和Tkinter的界面。
这程序可能有个别小bug。此程序有什么不足,请提出。