如何用Python写一个前置的截图小工具
Admin 2022-08-03 群英技术资讯 538 次浏览
这是工作期间同事想要个截完图之后可以显示并且永远前置的截图小工具(即不会被其他程序覆盖)直接上代码:
# # -*- 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") # 设置窗口大小与位置 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退出,假装工具条') # 再创建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键就会调用sys_out函数,弹出对话框 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()
具体用法是运行程序、选中区域(支持多次选定,以最后一次选定为主)、按esc完成截图同时弹出永远前置的截图照片窗体。
我打包了发给同事同事说很好用,就是差个快捷键。
其实也很简单,只须打包成exe程序后右击属性中设置快捷键即可~
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了python神经网络学习使用Keras进行简单分类,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
Python如何优雅地对数据进行分组?一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解一下,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
还记得小编上学的时候,为了可以在上课的时候可以玩手机,躲避老师的视线,会在上课之前用书本在后排占位。在这时,书本什么都不干,只是占个座,当我到教室时,我就可以替换上去了。这个作用和python中的pass很像。当你不知道此处写什么代码,可以把pass码上,这时pass不会影响这串代码,只是占个位置。当想到合适的代码,替换过来就可以了。本文小编就带大家认识一下这个”无私奉献“的pass语句。
这篇文章主要为大家介绍了python数字图像处理使用skimage读取显示与保存图片示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
这篇文章主要介绍了Python学习之名字,作用域,名字空间,文章围绕主题展开详细内容介绍,具有一定的参考价值,需要的小伙伴可以参考以一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008