利用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程序后右击属性中设置快捷键即可~

到此这篇关于利用Python实现一个简易的截图工具的文章就介绍到这了,更多相关Python截图工具内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 用Python实现屏幕截图详解

    目录 一.序言 二.环境配置 三.屏幕截屏源码与解析 四.结语 一.序言 在csdn上有很多纯copy,这给我复现带来了很大的麻烦,所以我想根据我的个人找截图的经历记录下来,给未来的自己看,免得忘记了云云.由于我比较喜欢用opencv处理图像,所以截屏最后都会附带一个使用opencv显示图片的一个步骤. 二.环境配置 1.下载pyautogui包 pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/ 注:使用pyau

  • python编写adb截图工具的实现源码

    目录 一. 功能 二.使用说明 三.实现 1.初始源码 2.优化:增加ip连接断开重连处理 一. 功能 Android端或者Android终端的远程截图至本地电脑中 二.使用说明 1.adb截图工具可用于Android手机及Android终端 2.使用数据线连接前提:电脑与Android终端/手机已连接 Android终端/手机已打开开发者模式 3.生成的图片格式为png 三.实现 1.初始源码 import time import os,sys #截图 def screencap_cmd(fi

  • Python截图并保存的具体实例

    大家肯定会疑问,为什么需要用python去进行截图保存,或者说是我们的QQ.微信都是自带截图工具的,可以直接拿过来进行使用的,但是事实上,一般在测试的时候,经常会遇到代码报错等问题,这种需要反馈的时候,就需要利用到python自行截图,好啦,下面就是实现的几个操作. 1.selenium for python 实现代码如下: import time from selenium import webdriver driver = webdriver.Chrome() driver.maximize

  • Python 自动唤醒窗口截图脚本

    目录 1.准备 2.如何获取窗口坐标 3. 还原最小化窗口 4.截图 利用Python自带的win32api和win32con.win32gui等模块,我们能执行许多windows下的自动化操作.比如两个窗口的自动点击操作,从软件中的窗口复制文本到txt中,甚至是截图操作. 截图的操作用途最为广泛,你可以用它配合定时工具,定时检测某个程序的运行情况:甚至可以根据截图做一些辅助性的决策,比如玩类似于<连连看 >的 游戏时,对相同类型的方块进行标记,辅助你玩游戏. 下面就讲讲如何使用 win32a

  • Python文字截图识别OCR工具实例解析

    一.简介 你一定用过那种"OCR神器",可以把图片中的文字提取出来,极大的提高工作效率. 今天,我们就来做一款实时截图识别的小工具.顾名思义,运行程序时,可以实时把你截出来的图片中的文字识别出来. 二.模块 import keyboard # 用于监控键盘按下,触发事件(pip install keyboard) import time from aip import AipOcr # 调用百度接口(pip install baidu-aip) from PIL import Imag

  • Python 实现Mac 屏幕截图详解

    目录 前言 pyscreenshot github地址 Python 安装 用例代码 截图效果 总结 前言 最近想做个小玩意,需要在mac端实现屏幕截图,搜了下网上中文资源都比较老旧,于是查了下,发现有些好用的Python库已经支持Mac 以及 Linux 了,特此记录 pyscreenshot github地址 github地址https://github.com/Zjvngvn/pyscreenshot里面有安装和用例说明 Python 安装 pip install pyscreenshot

  • 利用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(Tru

  • 如何利用Python实现一个论文降重工具

    前言 时值毕业季,有不少小伙伴深受论文查重的困扰.因此我便想到做一个简单的自动去重的工具,先看看效果,我们再对原理或是代码实现做进一步的分析. 首先需要输入appid以及key,这些可以在百度翻译开放平台申请一个账号,可以免费申请一个账号.接着将需要进行降重的文本内容复制到相应的输入框内,点击开始按钮,即可输出不同但意思相近的语句,即达到降重去重的作用.点击复制按钮便可以将得到的新文本复制到剪贴板上,点击清楚按钮可以重新输入需要降重的文本,并且循环往复地进行. 去重原理 论文查重的粒度是句子,两

  • Python利用tkinter实现一个简易番茄钟的示例代码

    之前捣鼓树莓派时,要求做一个番茄钟,但最后就只是搞成一个与树莓派没啥关系的py程序,虽然简陋,但就此记录一下自学的成果. 程序实现番茄工作法:25分钟工作,5分钟休息 完成一次番茄工作时间,就记一个番茄 (不把休息时间算在里面,有时候自己都不想休息,好吧,是我不知道怎么把番茄工作时间和休息时间联系在一块来记录番茄个数) 这个程序倒计时显示的是从24:59开始,是因为按的时候算是1秒? 运行界面如下: 自己感觉这个界面还行,朴素中带着点高级感 代码参考了一些大佬写的番茄钟程序,特别是那个倒计时的实

  • 使用Python制作一个打字训练小工具

    一.写在前面 说道程序员,你会想到什么呢?有人认为程序员象征着高薪,有人认为程序员都是死肥宅,还有人想到的则是996和 ICU. 别人眼中的程序员:飞快的敲击键盘.酷炫的切换屏幕.各种看不懂的字符代码. 然而现实中的程序员呢?对于很多程序员来说,没有百度和 Google 解决不了的问题,也没有 ctrl + c 和 ctrl + v 实现不了的功能. 那么身为一个程序员,要怎么让自己看起来更加"专业"呢?答案就是加快自己的打字速度了,敲的代码可能是错的,但这个13却是必须装的! 然而还

  • 利用django创建一个简易的博客网站的示例

    一.页面实现 index.html base.html post.html header.html footer.html <!-- index.html--> {% extends 'base.html' %} <html lang="en"> <head> <meta charset="UTF-8"> <title>个人博客</title> </head> <body>

  • 用Python写一个简易版弹球游戏

    我们前面讲了几篇关于类的知识点,为了让大家更好的掌握类的概念,并灵活的运用这些知识,我写了一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python写小游戏还是蛮方便的,蛮有意思的~~ 先看一下我们的最终效果图 我们分9步来讲解如何写这个小游戏 1.创建游戏的主界面 我们用Python的内置模块Tkinter来完成了,它是Python的标准GUI工具包,可以非常方便在制作GUI小工具,因为是跨平台的,可以方便的在win和linux下运行,我们用

  • 教你利用Python+Turtle绘制简易版爱心表白

    一.效果 快放10倍 总共分为三部分,左上角的正文,下方的心形和右下角的署名 特别需要注意的一点是这种东西不但要装Python,还与分辨率有关(换个屏幕可能效果雪崩,因为用的是绝对坐标),因此并不建议实际拿去弄(哪怕能解决上述两个问题) 二.正文部分 效果: 本质是每写一行话,然后将坐标下移换行,再写一行,以此类推 # content就是该行的内容了,想些啥写啥吧 def drawLine(content, x, y, sleep=3): goto(x, y) write(content, fo

  • 如何使用Python实现一个简易的ORM模型

    本文记录下自己使用Python实现一个简易的ORM模型 使用到的知识 1.元类 2.描述器 元类 对于元类,我的理解其实也便较浅,大概是这个意思 所有的类都是使用元类来进行创建的,而所有的类的父类中必然是object(针对Python3),Python中的元类只有一个(type),当然这里不包含自定义元类 下面我们来看下类的创建 class Test: # 定义一个类 pass Test1 = type("Test2",(object,),{"name":"

  • 利用Python+PyQt5实现简易浏览器的实战记录

    目录 实验环境 依赖项安装 编程实现 浏览器有一个可以用于展示网页的窗口 代码 总结 实验环境 操作系统:Linux Mint 编辑器:vim 编程语言:python3 依赖项安装 安装PyQt5 Qt是一个跨平台的C++应用程序开发框架 sudo apt-get install python3-pyqt5 安装完成后进入python命令行界面测试是否安装正确 python3 >>>import PyQt5 执行命令后如果没有任何提示,说明安装成功 编程实现 Qt为开发者提供了QtWeb

  • 利用Python打造一个多人聊天室的示例详解

    一.实验名称 建立聊天工具 二.实验目的 掌握Socket编程中流套接字的技术,实现多台电脑之间的聊天. 三.实验内容和要求 vii.掌握利用Socket进行编程的技术 viii.必须掌握多线程技术,保证双方可以同时发送 ix.建立聊天工具 x.可以和多个人同时进行聊天 xi.必须使用图形界面,显示双方的语录 四.实验环境 PC多台,操作系统Win7,win10(32位.64位) 具备软件python3.6 . 五.操作方法与实验步骤 服务端 1.调入多线程.与scoket包,用于实现多线程连接

随机推荐