python制作指定区域截图工具_用python实现选择截图区域
一直想用python实现一个类似QQ截图的功能,但不直接截图,而是返回截图的区域,以下是代码# -*- coding:utf-8 -*-
import tkinter
import tkinter.filedialog
import os
from PIL import ImageGrab
from time import sleep
from tkinter import StringVar, IntVar
#创建tkinter主窗口
root = tkinter.Tk()
#指定主窗口位置与大小
root.geometry('200x80+400+300')
#不允许改变窗口大小
root.resizable(False, False)
class MyCapture:
def __init__(self, png):
#变量X和Y用来记录鼠标左键按下的位置
self.X = tkinter.IntVar(value=0)
self.Y = tkinter.IntVar(value=0)
self.selectPosition=None
#屏幕尺寸
screenWidth = root.winfo_screenwidth()
#print(screenWidth)
screenHeight = root.winfo_screenheight()
#print(screenHeight)
#创建顶级组件容器
self.top = tkinter.Toplevel(root, width=screenWidth, height=screenHeight)
#不显示最大化、最小化按钮
self.top.overrideredirect(True)
self.canvas = tkinter.Canvas(self.top,bg='white', width=screenWidth, height=screenHeight)
#显示全屏截图,在全屏截图上进行区域截图
self.p_w_picpath = tkinter.PhotoImage(file=png)
self.canvas.create_p_w_picpath(screenWidth//2, screenHeight//2, p_w_picpath=self.p_w_picpath)
#鼠标左键按下的位置
def onLeftButtonDown(event):
self.X.set(event.x)
self.Y.set(event.y)
#开始截图
self.sel = True
self.canvas.bind('', onLeftButtonDown)
#鼠标左键移动,显示选取的区域
def onLeftButtonMove(event):
if not self.sel:
return
global lastDraw
try:
#删除刚画完的图形,要不然鼠标移动的时候是黑乎乎的一片矩形
self.canvas.delete(lastDraw)
except Exception as e:
pass
lastDraw = self.canvas.create_rectangle(self.X.get(), self.Y.get(), event.x, event.y, outline='black')
self.canvas.bind('', onLeftButtonMove)
#获取鼠标左键抬起的位置,保存区域截图
def onLeftButtonUp(event):
self.sel = False
try:
self.canvas.delete(lastDraw)
except Exception as e:
pass
sleep(0.1)
#考虑鼠标左键从右下方按下而从左上方抬起的截图
myleft, myright = sorted([self.X.get(), event.x])
mytop, mybottom = sorted([self.Y.get(), event.y])
self.selectPosition=(myleft,myright,mytop,mybottom)
# pic = ImageGrab.grab((left+1, top+1, right, bottom))
#
# #弹出保存截图对话框
#
# fileName = tkinter.filedialog.asksaveasfilename(title='保存截图', filetypes=[('JPG files', '*.jpg')])
#
# if fileName:
#
# pic.save(fileName+'.jpg')
#关闭当前窗口
#print(left, ' ', top,' ',right,' ',bottom)
self.top.destroy()
self.canvas.bind('', onLeftButtonUp)
self.canvas.pack(fill=tkinter.BOTH, expand=tkinter.YES)
#开始截图
text = StringVar()
text.set('old')
def buttonCaptureClick():
#最小化主窗口
#root.state('icon')
#sleep(0.2)
filename = 'temp.png'
im = ImageGrab.grab()
im.save(filename)
im.close()
#显示全屏幕截图
w = MyCapture(filename)
buttonCapture.wait_window(w.top)
text.set(str(w.selectPosition))
#print(w.myleft,w.mybottom)
#截图结束,恢复主窗口,并删除临时的全屏幕截图文件
#label.config(text='Hello')
root.state('normal')
os.remove(filename)
label=tkinter.Label(root,textvariable=text)
label.place(x=10, y=30, width=160, height=20)
label.config(text='New test')
buttonCapture = tkinter.Button(root, text='截图', command=buttonCaptureClick)
buttonCapture.place(x=10, y=10, width=160, height=20)
#启动消息主循环
#root.update()
root.mainloop()
python制作指定区域截图工具_用python实现选择截图区域相关推荐
- python 代码行数统计工具_使用Python设计一个代码统计工具
问题 设计一个程序,用于统计一个项目中的代码行数,包括文件个数,代码行数,注释行数,空行行数.尽量设计灵活一点可以通过输入不同参数来统计不同语言的项目,例如: # type用于指定文件类型 pytho ...
- python制作浏览器 脚本之家_基于Python打造账号共享浏览器功能
本篇文章介绍的内容会涉及到以下知识: PyQt5的使用; Selenium的使用; 代理服务器的架设和使用: 一.账号限制之痛 在如今的互联网中,免费的信息和资源占据了很大一部分,各类互联网应用提供了 ...
- python制作的炫酷动画_用Python一键生成炫酷九宫格图片,火了朋友圈
作为一个男同胞来说,为了给女朋友拍一张美美的照片,着实需要花费很大的时间和精力,不仅仅需要从众多的图片中精心挑选,而且还需要有着超强的图片精修能力,才能得到一张张达到女友要求的图片,真心不容易啊- 朋 ...
- python 16bit转8bit的工具_利用python读取YUV文件 转RGB 8bit/10bit通用
注:本文所指的YUV均为YUV420中的I420格式(最常见的一种),其他格式不能用以下的代码. 位深为8bit时,每个像素占用1字节,对应文件指针的fp.read(1): 位深为10bit时,每个像 ...
- 利用python制作漂亮的词云图_利用python制作词云,wordcloud神器你值得拥有
相信许多人都看到过下面这样的词云图,词云图是一种很好的可视化工具,其作用主要是为了文本数据的视觉表示,既酷炫又能突出重点. 关于词云图的制作,网上能够搜集到很多的教程,许多都是利用了专用的工具,这些工 ...
- python替换指定位置word图片_用Python在word的指定位置插入图片(使用Python-docx包)...
1 2 首先,本实例是采用java语言的,需要进行xml操作,至于poi,docx4j这些,因为感觉不是文档不太好,要嘛就是操作不方便,而且英文就算了,主要是注释很少,让人云里雾里的.所以,嘿嘿,直接 ...
- python制作表白软件手机版_用Python做一个情人节表白神器
思路来自于「Python 编程时光」,我在其之上改进了一下,主要是通过tkinter编写一个界面方便使用,大家可以关注「Python 编程时光」这一良心公众号. 本文最后给出了打包好的软件,无需安装P ...
- 用python制作的游戏有哪些_用 Python 做个简单的井字游戏
在这个教程中,我将展示如何利用Python来做一个井字游戏.这将包括函数.列表.if语句.while循环.for循环以及错误处理等等. 首先,我们将创建两个函数,第一个函数将会打印出井字游戏的背景模板 ...
- python可以做哪些小工具_用Python写过哪些「脑洞大开」的小工具?
造数 - 今天教你用Python 来随机写诗 思路很简单:从唐诗三百首中获取最常使用的汉字,然后在这些汉字中拿出一些组成新"诗". 看看出来了什么诗 空女寒国乐,已照柳落声. 自夫 ...
- 利用python制作漂亮的词云图_利用python制作漂亮的词云图
新建一个新的目录 随便找个地方新建一个目录,比如我在F盘下面新建一个word_cloud文件夹(名字都是随便取),并且打开这个文件夹. 把刚刚下载的msyh.ttc复制到这里. 新建一个my_word ...
最新文章
- python 为什么每次代码运行时间不同-python – 气流在同一个dag的不同时间运行任......
- 深度学习核心技术精讲100篇(五十三)-机器学习中的隐私保护
- HTML基础_Day01
- 《实践与思考》系列连载(5)——问答Hprose,以及关于技术与开源的思考
- Zabbix3.2.6之通过JMX监控Tomcat
- C#中gridView常用属性和技巧介绍
- 2D 转换之 scale
- Ant的使用 - 简单介绍
- No rule to make target `/usr/lib/arm-linux-gnueabihf/libopencv_videostab.so.2.4.8'
- RESTful规范1
- 查看sql语句的执行计划
- 四旋翼飞行器避障系统基础
- 爬取今日头条新闻,并导入execle中(主要用了selenium)
- win10不兼容 软件 ietest
- 几万年前,孙悟空的一次删库跑路...
- 法律人工智能的前世今生,附熊明辉教授简历(公号回复“法律AI”或“熊明辉AI”下载PDF典型资料,欢迎转发、赞赏支持科普)
- c# 使用System.Media.SoundPlayer播放wav格式的声音文件
- access查询出生日期格式转换_设置日期和时间字段的格式
- C++共享指针的父类和子类转化
- 分析Crash report
热门文章
- 微信小程序web-view的H5页面如何使用微信直播功能
- filmimpact安装教程_【更新】Premiere Pro CC 转场插件:FilmImpact 1 FilmImpact 2 v3.0.2
- html菜单栏向左展开与收起,网页左侧固定菜单栏的展开与收起
- 技术架构图-Java技术栈
- 怎样统计PPT演示文稿的字数
- 修复win10右键卡死鼠标转圈
- 关于CAD选择集的一些用法
- scara机器人用户坐标系标定与工具坐标(TCP)标定
- cmd命令行激活win7
- 鸿蒙系统图标大小怎么调节,华为手机桌面图标大小怎么调?用华为手机的朋友这些技巧需要了解...