溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么用Python實現(xiàn)一個簡易的截圖工具

發(fā)布時間:2022-07-02 09:52:39 來源:億速云 閱讀:224 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“怎么用Python實現(xiàn)一個簡易的截圖工具”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么用Python實現(xiàn)一個簡易的截圖工具”吧!

代碼:

# # -*- coding: utf-8 -*-
import tkinter as tk
import pyautogui
import tkinter
from PIL import ImageTk
from PIL import Image
 
root = tk.Tk()
root.wm_attributes('-topmost', 1)
 
root.overrideredirect(True)  # 隱藏窗口的標題欄
# root.attributes("-alpha", 0.3)    # 窗口透明度70 %
root.attributes("-alpha", 0.4)  # 窗口透明度60 %
# root.geometry("300x200+10+10")      # 設(shè)置窗口大小與位置
root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight()))
root.configure(bg="blue")
 
# 當(dāng)工具條
canvas = tk.Canvas(root)
canvas.configure(width=300)
canvas.configure(height=100)
canvas.configure(bg="yellow")
canvas.configure(highlightthickness=0)  # 高亮厚度
canvas.place(x=(root.winfo_screenwidth() - 500), y=(root.winfo_screenheight() - 300))
canvas.create_text(150, 50, font='Arial -20 bold', text='ESC退出,假裝工具條')
 
# 再創(chuàng)建1個Canvas用于圈選
cv = tk.Canvas(root)
x, y = 0, 0
xstart, ystart = 0, 0
 
 
def move(event):
    global x, y, xstart, ystart
    new_x = (event.x - x) + canvas.winfo_x()
    new_y = (event.y - y) + canvas.winfo_y()
    s = "300x200+" + str(new_x) + "+" + str(new_y)
    canvas.place(x=new_x - xstart, y=new_y - ystart)
    print("s = ", s)
    print(root.winfo_x(), root.winfo_y())
    print(event.x, event.y)
 
 
# 鼠標左鍵按下
def button_1(event):
    global x, y, xstart, ystart
    x, y = event.x, event.y
    xstart, ystart = event.x, event.y
    print("event.x, event.y = ", event.x, event.y)
    xstart, ystart = event.x, event.y
    cv.configure(height=1)
    cv.configure(width=1)
    cv.place(x=event.x, y=event.y)
 
 
# 鼠標左鍵按下并移動
def b1_Motion(event):
    global x, y
    x, y = event.x, event.y
    print("event.x, event.y = ", event.x, event.y)
    cv.configure(height=event.y - ystart)
    cv.configure(width=event.x - xstart)
 
 
# 鼠標左鍵松開
def buttonRelease_1(event):
    global x, y, xstart, ystart
    x, y = event.x, event.y
    print("event.x, event.y = ", event.x, event.y)
    Pstart = [0, 0]
    cv.place_forget()
    img = pyautogui.screenshot(region=[xstart, ystart, x - xstart, y - ystart])  # x,y,w,h
    img.save('screenshot.png')
 
 
# 退出
def sys_out(even):
    root.destroy()
    func()
 
# 綁定事件
canvas.bind("<B1-Motion>", move)
# 綁定事件到Esc鍵,當(dāng)按下Esc鍵就會調(diào)用sys_out函數(shù),彈出對話框
root.bind('<Escape>', sys_out)
root.bind("<Button-1>", button_1)
root.bind("<B1-Motion>", b1_Motion)
root.bind("<ButtonRelease-1>", buttonRelease_1)
img_png = None
def func():
    root1 = tk.Tk()
    root1.wm_attributes('-topmost', 1)
    img_open = Image.open("screenshot.png")
    global img_png
    img_png = ImageTk.PhotoImage(img_open)
    label_img = tk.Label(root1, image = img_png)
    label_img.pack()
 
root.mainloop()

具體用法是運行程序、選中區(qū)域(支持多次選定,以最后一次選定為主)、按esc完成截圖同時彈出永遠前置的截圖照片窗體。

感謝各位的閱讀,以上就是“怎么用Python實現(xiàn)一個簡易的截圖工具”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么用Python實現(xiàn)一個簡易的截圖工具這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI