Python GUI 截图小工具 实例Demo

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Giser_D/article/details/83476817

首先上代码

#导入相应的库
from tkinter import *    #界面库
from PIL import ImageGrab  #图形库
from tkinter import filedialog #保存文件对话框
import PyHook3      #获得坐标
import pythoncom


hm = PyHook3.HookManager()  #初始化钩子对象

def OnMouseDownEvent(event):
    """Return start coordinate"""
    global start_x
    global start_y
    start_x,start_y = event.Position  #得到初始点的x,y坐标
    return True

def OnMouseUpEvent(event):
    """Return end coordinate"""
    end_x,end_y = 0,0
    end_x,end_y = event.Position
    hm.UnhookMouse()
    bbox = (start_x,end_y,end_x,start_y)  #顺序不能乱--
    screen = ImageGrab.grab(bbox)         # 默认全屏
    filesave = filedialog.asksaveasfilename() #添加文件保存对话框
    screen.save(filesave)  #保存对应文件
    root.quit()  #关闭窗口
    return True

def ScreenShoot():
    """ Return screen shot """
    hm.MouseLeftDown = OnMouseDownEvent
    hm.MouseLeftUp = OnMouseUpEvent
    hm.HookMouse()
    pythoncom.PumpMessages()

def ScreenShootAllGraph():
    """ Return all Screen"""
    root.wm_minsize(0,0)
    screen = ImageGrab.grab()         # 默认全屏
    filesave = filedialog.asksaveasfilename() #添加文件保存对话框
    screen.save(filesave)  #保存对应文件
    root.quit()  #关闭窗口

# 初始化tkinter
root = Tk()
root.title("YTouch截图 1.0")
root.geometry('300x400')  #窗口大小:宽*高
root.resizable(width=True, height=True) #设置宽高不可变

""" 截图按钮 """
btn_ScreenShot = Button(root,text="开始截图",command=ScreenShoot)
btn_ScreenShot.place(width=90,height=30,x=20,y=300)

""" 截图全图 """
btn_ScreenAllShot = Button(root,text="截取全图",command=ScreenShootAllGraph)
btn_ScreenAllShot.place(width=90,height=30,x=130,y=300)

root.mainloop()

然后看效果:

截取全图的效果如下:

2.局部截图效果

其中这个demo代码有几个注意点:

1.它保存格式是png格式的

2.另存为对话框需要把文件命名为xxx.png格式的才可以正常显示

3.相应的库文件下载比较麻烦 -- 大家自行下载即可

猜你喜欢

转载自blog.csdn.net/Giser_D/article/details/83476817