如何用Python写一个前置的截图小工具
Admin 2022-08-03 群英技术资讯 1183 次浏览
关于“如何用Python写一个前置的截图小工具”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。这是工作期间同事想要个截完图之后可以显示并且永远前置的截图小工具(即不会被其他程序覆盖)直接上代码:
# # -*- 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实现水印图片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要为大家介绍了对比分析BN和dropout在预测和训练时区别,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
在日常的工作,经常需要获取时间等相关信息,下面这篇文章主要给大家介绍了关于如何用python从日期中获取年、月、日和星期等30种信息的相关资料,需要的朋友可以参考下
本文将和大家一起了解什么是上下文管理器 和 Python 的 with 语句,以及如何完成自定义。然后扩展 Timer 以便它也可以用作上下文管理器,感兴趣的可以了解一下
这篇文章介绍了Python实现猜数字小游戏,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以收藏下,方便下次浏览观看
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008