基于python实现鼠标实时坐标监测

 更新时间:2023年11月23日 11:02:42   作者:就叫飞六吧  
这篇文章主要给大家介绍了如何基于python实现鼠标实时坐标监测,文章通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

python实现鼠标实时坐标监测

一、说明

使用了以下技术和库:

  • tkinter:用于创建GUI界面。
  • pyperclip:用于复制文本到剪贴板。
  • pynput.mouse:用于监听鼠标事件,包括移动和点击。
  • threading:用于创建多线程,以便在后台执行鼠标事件监听和标签更新的任务。
  • time:用于控制线程休眠,以定时更新标签文本。

二、代码

# coding=gbk  # 指定文件编码为GBK
import tkinter as tk  # 导入tkinter库,用于创建GUI界面
import pyperclip  # 导入pyperclip库,用于复制文本到剪贴板
from pynput import mouse  # 导入pynput库的mouse模块,用于监听鼠标事件
import threading  # 导入threading库,用于创建多线程
import time  # 导入time库,用于线程休眠

# 创建一个MouseCoordinateApp类,用于处理鼠标坐标显示和复制
class MouseCoordinateApp:
    def __init__(self):
        self.root = tk.Tk()  # 创建一个Tkinter窗口
        self.root.title("鼠标坐标实时展示")  # 设置窗口标题
        self.root.geometry("350x80")  # 设置窗口大小
        self.root.resizable(False, False)  # 禁止窗口大小调整
        self.label = tk.Label(self.root, text="单机截取坐标:X: - , Y: -\n实时坐标:X: - , Y: -")  # 创建一个标签控件
        self.label.pack()  # 将标签控件添加到窗口
        copy_button = tk.Button(self.root, text="复制坐标", command=self.copy_coordinates)  # 创建一个按钮控件
        copy_button.pack()  # 将按钮控件添加到窗口
        self.root.attributes("-topmost", True)  # 设置窗口置顶
        self.extracted_coordinates = (0, 0)  # 初始化截取坐标
        self.current_coordinates = (0, 0)  # 初始化实时坐标
        self.last_extracted_coordinates = (0, 0)  # 初始化上一次截取的坐标
        self.update_interval = 0.1  # 更新标签的时间间隔
        threading.Thread(target=self.start_mouse_listener, daemon=True).start()  # 创建并启动鼠标事件监听的线程
        threading.Thread(target=self.update_label_thread, daemon=True).start()  # 创建并启动标签更新的线程

    def copy_coordinates(self):
        x, y = self.last_extracted_coordinates  # 获取上一次截取的坐标
        coordinates = f"X: {x}, Y: {y}"  # 格式化坐标文本
        pyperclip.copy(coordinates)  # 复制坐标文本到剪贴板
        self.label.config(text=f"已复制坐标:{coordinates}")  # 更新标签文本

    def start_mouse_listener(self):
        with mouse.Listener(on_move=self.on_move, on_click=self.on_click) as listener:
            listener.join()  # 启动鼠标事件监听

    def on_move(self, x, y):
        self.current_coordinates = (x, y)  # 更新实时坐标

    def on_click(self, x, y, button, pressed):
        if pressed:
            self.last_extracted_coordinates = self.extracted_coordinates  # 更新上一次截取的坐标
            self.extracted_coordinates = (x, y)  # 如果鼠标被按下,更新截取坐标

    def update_label_thread(self):
        while True:
            time.sleep(self.update_interval)  # 线程休眠一段时间
            self.update_label()  # 更新标签文本

    def update_label(self):
        extracted_x, extracted_y = self.extracted_coordinates  # 获取截取坐标
        current_x, current_y = self.current_coordinates  # 获取实时坐标
        self.label.config(text=f"截取坐标:X: {extracted_x}, Y: {extracted_y}\n实时坐标:X: {current_x}, Y: {current_y}")

    def run(self):
        self.root.mainloop()  # 启动主程序的主循环

if __name__ == "__main__":
    app = MouseCoordinateApp()  # 创建MouseCoordinateApp实例
    app.run()  # 启动应用程序的主循环

三、效果

到此这篇关于基于python实现鼠标实时坐标监测的文章就介绍到这了,更多相关python鼠标坐标监测内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python安装模块如何通过setup.py安装(超简单)

    python安装模块如何通过setup.py安装(超简单)

    这篇文章主要介绍了python安装模块如何通过setup.py安装,安装方法其实很简单,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-05-05
  • 浅谈python写入大量文件的问题

    浅谈python写入大量文件的问题

    今天小编就为大家分享一篇浅谈python写入大量文件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • 使用Pyrex来扩展和加速Python程序的教程

    使用Pyrex来扩展和加速Python程序的教程

    这篇文章主要介绍了使用Pyrex来扩展和加速Python程序的教程,来自IBM官方技术文档,需要的朋友可以参考下
    2015-04-04
  • Python Trie树实现字典排序

    Python Trie树实现字典排序

    Trie树是一种很常用的树结构,它被广泛用于各个方面,比如字符串检索、中文分词、求字符串最长公共前缀和字典排序等等,而且在输入法中也能看到Trie树的身影
    2014-03-03
  • 关于python3的ThreadPoolExecutor线程池大小设置

    关于python3的ThreadPoolExecutor线程池大小设置

    这篇文章主要介绍了关于python3的ThreadPoolExecutor线程池大小设置,线程池的理想大小取决于被提交任务的类型以及所部署系统的特性,需要的朋友可以参考下
    2023-04-04
  • python实现数据图表

    python实现数据图表

    plotly是现代平台的敏捷商业智能和数据科学库,它作为一款开源的绘图库,可以应用于Python、R、MATLAB、Excel、JavaScript和jupyter等多种语言,主要使用的js进行图形绘制,实现过程中主要就是调用plotly的函数接口,底层实现完全被隐藏,便于初学者的掌握。
    2017-07-07
  • 浅析Python中signal包的使用

    浅析Python中signal包的使用

    这篇文章主要介绍了Python中signal包的使用,主要在Linux系统下对进程信号进行相关操作,需要的朋友可以参考下
    2015-11-11
  • Python中的集合一起来学习一下

    Python中的集合一起来学习一下

    这篇文章主要为大家详细介绍了Python集合,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • python tensorflow基于cnn实现手写数字识别

    python tensorflow基于cnn实现手写数字识别

    这篇文章主要为大家详细介绍了python tensorflow基于cnn实现手写数字识别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • python实现字典嵌套列表取值

    python实现字典嵌套列表取值

    今天小编就为大家分享一篇python实现字典嵌套列表取值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论