利用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")
# 當工具條
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鍵,當按下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完成截圖同時彈出永遠前置的截圖照片窗體。
我打包了發(fā)給同事同事說很好用,就是差個快捷鍵。
其實也很簡單,只須打包成exe程序后右擊屬性中設(shè)置快捷鍵即可~
到此這篇關(guān)于利用Python實現(xiàn)一個簡易的截圖工具的文章就介紹到這了,更多相關(guān)Python截圖工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python操作Redis數(shù)據(jù)庫的超詳細教程
大家應(yīng)該都知道redis是一個基于內(nèi)存的高效的鍵值型非關(guān)系數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于Python操作Redis的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-06-06
django框架用戶權(quán)限中的session緩存到redis中的方法
今天小編就為大家分享一篇django框架用戶權(quán)限中的session緩存到redis中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python中的 ansible 動態(tài)Inventory 腳本
這篇文章主要介紹了Python中的 ansible 動態(tài)Inventory 腳本,本章節(jié)通過實例代碼從mysql數(shù)據(jù)作為數(shù)據(jù)源生成動態(tài)ansible主機為入口介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2020-01-01
python使用celery實現(xiàn)異步任務(wù)執(zhí)行的例子
今天小編就為大家分享一篇python使用celery實現(xiàn)異步任務(wù)執(zhí)行的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
對python使用telnet實現(xiàn)弱密碼登錄的方法詳解
今天小編就為大家分享一篇對python使用telnet實現(xiàn)弱密碼登錄的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
python 命令行傳入?yún)?shù)實現(xiàn)解析
這篇文章主要介紹了python 命令行傳入?yún)?shù)實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
淺談pytorch和Numpy的區(qū)別以及相互轉(zhuǎn)換方法
今天小編就為大家分享一篇淺談pytorch和Numpy的區(qū)別以及相互轉(zhuǎn)換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Pyinstaller打包.py生成.exe的方法和報錯總結(jié)
今天小編就為大家分享一篇關(guān)于Pyinstaller打包.py生成.exe的方法和報錯總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04

