1. 程式人生 > >Python GUI 截圖小工具 例項Demo

Python GUI 截圖小工具 例項Demo

首先上程式碼

#匯入相應的庫
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.相應的庫檔案下載比較麻煩 -- 大家自行下載即可