使用`pyautogui`和`tkinter` 获取鼠标光标的位置

这段代码是一个简单的Python程序,使用`pyautogui`和`tkinter`库创建了一个窗口应用程序,用于获取鼠标光标的位置。

让我们逐行解释代码的功能:

1. `#!/usr/bin/python3`:这是一个Shebang行,用于指定脚本使用的解释器。

2. `# -*- coding: UTF-8 -*-`:这是一个编码声明,指定脚本使用UTF-8编码。

3. `import time`:导入`time`模块,用于实现延时功能。

4. `import pyautogui as pag`:导入`pyautogui`库,并使用别名`pag`来引用。

5. `import tkinter`:导入`tkinter`库,用于创建窗口应用程序。

6. `def get():`:定义了一个名为`get`的函数,用于获取鼠标光标的位置。

7. `po.delete(0,tkinter.END)`:清空文本框中的内容。

8. `time.sleep(1)`:程序暂停1秒,等待获取光标位置。

9. `x, y = pag.position()`:使用`pyautogui`的`position()`方法获取当前鼠标光标的位置,并将其赋值给变量`x`和`y`。

10. `po.insert(0, str(x) + ',' + str(y))`:将获取到的光标位置插入到文本框中。

11. `win = tkinter.Tk()`:创建一个`Tkinter`窗口对象。

12. `win.title("鼠标坐标")`:设置窗口的标题为"鼠标坐标"。

13. `w = win.winfo_screenwidth()`和`h = win.winfo_screenheight()`:获取屏幕的宽度和高度。

14. `win.geometry("%dx%d+%d+%d" %(180,80,(w-180)/2,(h-80)/2))`:设置窗口的大小为180x80,并将窗口居中显示在屏幕上。

15. `tip = tkinter.Label(win,text="返回点击获取1秒后的光标位置")`:创建一个标签对象,用于显示提示信息。

16. `tip.grid(row=0)`:将提示标签放置在窗口中的第一行。

17. `po = tkinter.Entry(win)`:创建一个文本框对象,用于显示光标位置。

18. `po.grid(row=1)`:将文本框放置在窗口中的第二行。

19. `do = tkinter.Button(win,text="获取",command=get)`:创建一个按钮对象,用于触发获取光标位置的功能。

20. `do.grid(row=2)`:将按钮放置在窗口中的第三行。

21. `win.mainloop()`:进入`Tkinter`的主循环,监听并响应窗口事件,保持窗口显示。

当运行这段代码时,将显示一个窗口应用程序,窗口中有一个标签显示提示信息,一个文本框用于显示光标位置,以及一个按钮用于触发获取光标位置的功能。当点击按钮时,程序会延时1秒后获取光标位置,并将其显示在文本框中。窗口会一直显示,直到手动关闭窗口。

#!/usr/bin/python3
# -*- coding: UTF-8 -*-import time
import pyautogui as pag
import tkinterdef get():po.delete(0,tkinter.END)time.sleep(1) #几秒后返回位置x , y = pag.position()po.insert(0,str(x)+','+str(y))win = tkinter.Tk()
win.title("鼠标坐标")
w = win.winfo_screenwidth()
h = win.winfo_screenheight()
win.geometry("%dx%d+%d+%d" %(180,80,(w-180)/2,(h-80)/2))#窗口居中、窗口大小180*80
tip = tkinter.Label(win,text="返回点击获取1秒后的光标位置")
tip.grid(row=0)
po = tkinter.Entry(win)
po.grid(row=1)
do = tkinter.Button(win,text="获取",command=get) #点击获取位置
do.grid(row=2)win.mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝牙协议栈】【经典蓝牙】【BLE蓝牙】蓝牙协议规范(射频、基带链路控制、链路管理)

目录 1. 蓝牙协议规范(射频、基带链路控制、链路管理) 1.1 射频协议 1.2 基带与链路控制协议 1.3 链路管理器 1. 蓝牙协议规范(射频、基带链路控制、链路管理) 蓝牙协议是蓝牙设备间交换信息所应该遵守的规则。与开放系…

wifi连接上后是怎么提供网络的?

干了六个月的网络协议栈,又回到了wifi老本行,所以我最近又开始研读 Android wifi fwk的源码了 之前还在干wifi的时候就思考过一个问题,wifi区别于蓝牙的一个很明显的点是,wifi可以提供 access to Internet 所以我想看看wifi连接成…

vue2 div滚动条下拉到底部时触发事件(懒加载) 超级简易版本的懒加载

文章目录 导文文章重点内容效果展示:代码展示这些方法适用于哪些场景 总结 导文 vue2 div滚动条下拉到底部时触发事件(懒加载) 超级简易版本的懒加载 文章重点 内容效果展示: 当div拉到底部的时候: 编辑器返回: 代码展示 在…

substr函数踩坑

##hive和impala的substr函数比对 ###在hive中substr函数使用 select substr(name,0,5) from bd_test; 结果:12345 select substr(name,1,5) from bd_test; 结果:12345 ###impala中substr函数使用 select substr(name,0,5) from bd_test; 结果&#xff…

JAVA后端开发面试基础知识(十)——设计模式

创建型模式 创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是 new 一个对象,然后 set 相关属性。但是,在很多场景下,我们需要给客户端提供更加友好的创建对象的方式,尤其是那种我们定义了类&am…

BJFU|计算机网络缩写对照表

之前有过这个题型,但23年没考,所以按需准备 A ACK (ACKnowledgement) 确认 ADSL (Asymmetric Digital Subscriber Line) 非对称数字用户线 API (Applicatin Programming Interface) 应用编程接口 ARP (Address Resolution Protocol) 地址解析协议 ARQ (…

Git - Protocol

4.1 Git on the Server - The Protocols 至此,你应该可以完成大部分日常工作,而这些工作都需要用到 Git。不过,要在 Git 上进行任何协作,你都需要一个远程 Git 仓库。虽然从技术上讲,你可以推送改动到个人仓库&#xf…

银河麒麟服务器操作系统V10【vnc配置多用户登录】

1.添加多用户(规划kingbase使用5901窗口,root使用5903); adduser kingbase 2.配置文件; cp -rp /lib/systemd/system/vncserver.service /etc/systemd/system/vncserver:1.servicecp -rp /lib/systemd/system/vncse…

【黑马程序员】Python初始

初始Python Python应用场景 什么是编程语言 安装Python开发环境 Python官网 选择Download 选择对应的Python版本和所要下载的操作系统 下载后直接下一步下一步即可安装成功 测试安装效果 重命名python命令让其使用Python3 echo alias python"python3" >…

编程笔记 Golang基础 046 mssql数据库连接与操作

编程笔记 Golang基础 046 mssql数据库连接与操作 一、连接与操作二、全局连接三、数据库连接字符串四、应用示例小结 数据库操作是现代软件系统不可或缺的一部分,对软件的功能实现、性能优化、数据安全等方面起着至关重要的作用。Go语言中连接和操作Microsoft SQL S…

知名比特币质押协议项目Babylon确认参加2024年在香港数码港举办的Hack.Summit()2024区块链开发者大会。

知名比特币质押协议项目Babylon确认参加2024年在香港数码港举办的Hack.Summit()2024区块链开发者大会。作为比特币生态的领军项目,Babylon积极参与全球区块链领域的交流与合作,此次出席大会将为其提供一个展示项目进展、交流技术与创新思路的重要平台。B…

2402. 2-SAT 问题(tarjan,2-SAT模板题)

活动 - AcWing 给定 n 个还未赋值的布尔变量 x1∼xn。 现在有 m 个条件,每个条件的形式为 “xi 为 0/1 或 xj 为 0/1 至少有一项成立”,例如 “x1 为 1 或 x3 为 0”、“x8 为 0 或 x4 为 0” 等。 现在,请你对这 n 个布尔变量进行赋值&am…

acwing算法提高之数据结构--树状数组

目录 1 专题介绍2 训练 1 专题介绍 本专题用来汇总使用树状数组算法求解的题目。 应用场景:给你长度为n的数组nums,可以改变第i个数的大小,求数组下标区间[left, right]内的前缀和。要求时间复杂度不超过 O ( l o g N ) O(logN) O(logN)。 …

使用 MySQL 实现 Java 版的 hashCode 函数

前提 MySQL 数据库的编码需要设置为 utf8 或 utf8mb4,因为下面给出的代码是以用 utf8 编码储存数据为前提的。 MySQL Function drop function if exists utf8_unicode; create function utf8_unicode(str varchar(1)) returns bigint begindeclare num_utf8 bigi…

【GB28181】SIP协议实践之Windows下VS2019编译eXosip、osip,测试(附工程源码,一键打开编译)

引言 SIP开源库或者GB28181,这里选择了osip和eXosip,但是这两个库的编译使用有些麻烦,源码下来之后编译会出现很多问题,网上也没有找到完整的编译介绍,只能一步一步的找办法解决,以下帮大家整理编译过程。 如果不想编译,可以跳转文章末尾链接直接下载相应工程直接编译即…

登录校验认证

会话技术 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪: 一种维护浏览器状态的方法,服务器需要识别多次请…

Aop注解+Redis解决SpringBoot接口幂等性(源码自取)

目录 一、什么是幂等性? 二、哪些请求天生就是幂等的? 三、为什么需要幂等 1.超时重试 2.异步回调 3.消息队列 四、实现幂等的关键因素 关键因素1 关键因素2 五、引入幂等性后对系统的影响 六、Restful API 接口的幂等性 实战Aop注解redis解…

计算机网络——计算机网络的性能

计算机网络——计算机网络的性能 速率带宽吞吐量时延时延宽带积往返时间RTT利用率信道利用率网络利用率 我们今天来看看计算机网络的性能。 速率 速率这个很简单,就是数据的传送速率,也称为数据率,或者比特率,单位为bit/s&#…

神经网络 梯度与神经元参数w、b关系;梯度与导数关系

参考:https://blog.csdn.net/weixin_44259490/article/details/90295146 视频:https://www.bilibili.com/video/BV1a14y167vh 概念 梯度与w的关系可以用梯度下降公式来表示:ww−α ∂ c o s t ∂ w \frac{\partial cost}{\partial w} ∂w∂…

vs创建asp.net core webapi发布到ISS服务器

打开服务器创建test123文件夹,并设置共享。 ISS配置信息: 邮件网站,添加网站 webapi asp.net core发布到ISS服务器网页无法打开解决方法 点击ISS Express测试,可以成功打开网页。 点击生成,发布到服务器 找到服务器IP…