Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python:在任何窗口中使用鼠标在对象周围绘制矩形?是否也将开始和结束坐标存储为与所述窗口相关的变量?

Python:在任何窗口中使用鼠标在对象周围绘制矩形?是否也将开始和结束坐标存储为与所述窗口相关的变量?
EN

Stack Overflow用户
提问于 2019-09-27 06:16:16
回答 1查看 2K关注 0票数 5

我对Python非常陌生,需要一种方法来实现我以前在宏脚本语言中做过的一个重要功能:

我有一个Python程序,将处理一个截屏图像使用pyscreenshot。为了提供pyscreenshot必要的x1,y1,x2,y2坐标来创建图像,我需要用户定义屏幕的一部分,在它周围画一个矩形。想想Windows中的“截取”工具和OSX中的cmd+shift+4吧。

我对使用任何必要的BSD模块持开放态度,但我需要OSX和Windows的模块支持。

我找到的每个例子都是关于如何在画布内或现有图像文件上绘制矩形的。这些示例对我没有帮助,因为我需要绘制坐标,并且相对于用户选择的任何操作系统窗口。

非常感谢你的帮助!

查看了在opencv、pyautogui、tkinter中绘制矩形的教程,但都是在程序而不是操作系统绘制的窗口或画布上绘制矩形。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-27 07:46:00

我首先会抓取您当前桌面的一个屏幕截图,将其显示在Canvas中,然后让您的用户在上面绘制一个矩形。然后检索矩形的边界框并在桌面上执行实际抓取。下面是一个基本示例(拖动以创建图像):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk
from PIL import ImageGrab, ImageTk

class GUI(tk.Tk):
    def __init__(self):
        super().__init__()
        self.withdraw()
        self.attributes('-fullscreen', True)

        self.canvas = tk.Canvas(self)
        self.canvas.pack(fill="both",expand=True)

        image = ImageGrab.grab()
        self.image = ImageTk.PhotoImage(image)
        self.photo = self.canvas.create_image(0,0,image=self.image,anchor="nw")

        self.x, self.y = 0, 0
        self.rect, self.start_x, self.start_y = None, None, None
        self.deiconify()

        self.canvas.tag_bind(self.photo,"<ButtonPress-1>", self.on_button_press)
        self.canvas.tag_bind(self.photo,"<B1-Motion>", self.on_move_press)
        self.canvas.tag_bind(self.photo,"<ButtonRelease-1>", self.on_button_release)

    def on_button_press(self, event):
        self.start_x = event.x
        self.start_y = event.y
        self.rect = self.canvas.create_rectangle(self.x, self.y, 1, 1, outline='red')

    def on_move_press(self, event):
        curX, curY = (event.x, event.y)
        self.canvas.coords(self.rect, self.start_x, self.start_y, curX, curY)

    def on_button_release(self, event):
        bbox = self.canvas.bbox(self.rect)
        self.withdraw()
        self.new_image = ImageTk.PhotoImage(ImageGrab.grab(bbox))
        self.attributes('-fullscreen', False)
        self.title("Image grabbed")
        self.canvas.destroy()
        self.deiconify()
        tk.Label(self,image=self.new_image).pack()

root = GUI()

root.mainloop()
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58128787

复制
相关文章
QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)
工程下载地址: https://download.csdn.net/download/xiaolong1126626497/21043499
DS小龙哥
2022/01/12
2K0
QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)
SetTimer在无窗口和有窗口线程的使用
 今天犯了一个粗心的错误,在无窗口线程中,SetTimer中设置计时器ID,而WM_TIMER消息响应函数中得到的计时器ID却不是之前设置的计时器ID.
雪影
2018/08/02
8300
PyGame:Python 游戏编程入门-1
pygame是SDL 库的 Python 包装器,它代表Simple DirectMedia 层。SDL 提供对系统底层多媒体硬件组件(例如声音、视频、鼠标、键盘和操纵杆)的跨平台访问。作为停滞不前的PySDL 项目pygame的替代品开始了生活。SDL 的跨平台特性意味着您可以为支持它们的每个平台编写游戏和丰富的多媒体 Python 程序!pygame
苏州程序大白
2022/09/16
2.2K0
PyGame:Python 游戏编程入门-1
C++ OpenCV轮廓周围矩形和圆形绘制
前面我们学习了轮廓提取,正常我们在提到到轮廓截取出来时一般需要是矩形的图像,这次我们就来学习一下轮廓周围绘制矩形等。
Vaccae
2019/07/24
2.5K0
Python游戏工具包---Pygame最常用的15个模块详解(附pdf版本)
最近很多读者想学习使用python来制作游戏,其中最经典的工具包就是Pygame ,如果单纯只看之前分享的是个游戏代码案例,直接来制作一款游戏有些难度
行哥玩Python
2020/07/14
16.7K0
Python游戏工具包---Pygame最常用的15个模块详解(附pdf版本)
Easy Games With Python and Pygame(一)- Pygame Quickstart
Pygame 是一个可以用于编写游戏的Python第三方模块,可以使用Pygame在基于Python语言的基础上开发出功能齐全的多媒体程序或者游戏。
RiemannHypothesis
2022/09/26
1.2K0
Easy Games With Python and Pygame(一)- Pygame Quickstart
OpenCV-Python学习(15)—— OpenCV 鼠标操作和响应(cv.setMouseCallback)
1. 学习目标 学习如何在OpenCV中处理鼠标事件; 学习鼠标事件与回调; 学习鼠标事件回调函数的基本流程。 2. Callback 基本流程 3. 鼠标事件 cv.setMouseCallback 函数说明 3.1 cv.setMouseCallback() 函数使用 cv.setMouseCallback(winname,onMouse,userdata) 3.2 参数说明 参数 说明 winname 表示监听鼠标事件的窗口。 onMouse 表示响应函数,即当鼠标事件触发时调用的函数。 user
Rattenking
2022/11/21
1.6K0
OpenCV-Python学习(15)—— OpenCV 鼠标操作和响应(cv.setMouseCallback)
labelme:图像数据标注
深度学习第一步就是制作数据集,手动去标注一些数据。本文将介绍一个用于图像数据标注的软件:labelme,并介绍它的安装方法,使用方法等。
数据科学工厂
2023/02/27
4.8K0
labelme:图像数据标注
为鼠标右键增加「此处打开命令窗口」
程序员最常用的工具就是终端了,而最实用的功能就是如何在某个目录下,快速的进入终端,以便对该目录的文件做一些处理,本文分享一下如何在 Mac 和 Windows 下实现这个功能。
somenzz
2021/12/16
1.9K0
为鼠标右键增加「此处打开命令窗口」
labelme:图像数据标注
深度学习第一步就是制作数据集,手动去标注一些数据。本文将介绍一个用于图像数据标注的软件:labelme,并介绍它的安装方法,使用方法等。
数据科学工厂
2023/01/19
1.9K0
表白小游戏
自己添加字体和图片也可 需要我的自己加群下载群文件970353786 ojbk晚安!
川川菜鸟
2021/10/18
1.2K0
万字长文详解如何用Python玩转OpenGL | CSDN 博文精选
【编者按】OpenGL(开放式图形库),用于渲染 2D、3D 矢量图形的跨语言、跨平台的应用程序编程接口,C、C++、Python、Java等语言都能支持 OpenGL。本文作者以 Python 语法为例,用两万字详解 OpenGL 的理论知识、用法与实际操作,干货满满,一起来看看吧。
AI科技大本营
2019/12/02
9.5K0
万字长文详解如何用Python玩转OpenGL | CSDN 博文精选
软件测试|超好用超简单的Python GUI库——tkinter(十四)
我们知道我们可以使用pillow绘制不同形状的图形,但是我们能不能使用tkinter实现这个功能呢,当然可以,tkinter也可以实现图形的绘制,并且可以将绘制的图形添加到我们的GUI中。
霍格沃兹测试开发Muller老师
2023/06/02
9220
Python中设置指定窗口为前台活动窗口(最顶层窗口)win32gui
参考链接:Python中设置指定窗口为前台活动窗口(最顶层窗口)win32gui: https://blog.csdn.net/bailichun19901111/article/details/105042145
forxtz
2020/10/10
8.4K0
Python中设置指定窗口为前台活动窗口(最顶层窗口)win32gui
520最浪漫表白:QQ打开基于Python实现的无法拒绝的音乐表白代码!别让等待,成了遗憾!
每个女孩都喜欢男孩对自己浪漫的表白,不过每个人性格不同,浪漫表白的方式也不尽相同。那么520怎样浪漫的表白好呢?程序员如何俘获心仪女神的心呢?当然是要用程序员的方法了! 在2020年5月20日到来之际,作为一个爱看抖音的纯小白的我也要跟跟风:用Python语言实现无法拒绝的音乐表白代码并用QQ图标方式打开!有想法的小伙伴们快快拿去向心爱的TA表白爱意吧!
荣仔_最靓的仔
2021/02/02
4.3K0
520最浪漫表白:QQ打开基于Python实现的无法拒绝的音乐表白代码!别让等待,成了遗憾!
让IE的地址栏在弹出窗口也显示
相信web开发人员经常使用到浏览器的地址栏,通过跟踪页面的地址来查看页面的源代码。
williamwong
2018/07/24
2.1K0
让IE的地址栏在弹出窗口也显示
写给 python 程序员的 OpenGL 教程
OpenGL 是 Open Graphics Library 的简写,意为“开放式图形库”,是用于渲染 2D、3D 矢量图形的跨语言、跨平台的应用程序编程接口(API)。OpenGL 不是一个独立的平台,因此,它需要借助于一种编程语言才能被使用。C / C++ / python / java 都可以很好支持 OpengGL,我当然习惯性选择 python 语言。
全栈程序员站长
2022/07/22
3.3K0
写给 python 程序员的 OpenGL 教程
Python实时获取鼠标下窗口文本
from ctypes import * from ctypes import wintypes from time import sleep #调用Windows系统动态链接库user32.dll user32 = windll.user32 p = wintypes.POINT() buffer = create_string_buffer(255) while True: sleep(0.5) #获取鼠标位置 user32.GetCursorPos(byref(p))
Python小屋屋主
2018/04/16
3.1K0
点击加载更多

相似问题

与窗口相关的鼠标坐标

13

获取与活动窗口相关的鼠标坐标

13

在画布上使用鼠标绘制矩形与鼠标坐标不同步

119

OpenCV Python:窗口大小和鼠标事件坐标

10

如何使用vtk将窗口坐标映射为对象坐标

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文