您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么用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)注!
免責(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)容。