Linux中实时监控鼠标坐标

2024-01-10

我需要一个 python 编码来在 Linux 中实时监控鼠标坐标。我发现下面的代码运行良好,但是鼠标坐标信息将显示在弹出的 GUI 窗口中。现在我不需要它在 GUI 窗口中显示,只需要将鼠标坐标信息保存到文本文件(日志文件)中。有人可以帮我吗?谢谢!另外,如果能按小时保存鼠标坐标信息就太好了。

#!/usr/bin/env python

"""
Corrected, the thread stops now.
"""

import sys
import os

from time import sleep

import gtk
gtk.gdk.threads_init()

import threading

# uses the package python-xlib
# from http://snipplr.com/view/19188/mouseposition-on-linux-via-xlib/
# or: sudo apt-get install python-xlib
from Xlib import display


old_stdout = sys.stdout
sys.stdout = open(os.devnull, 'w')


def mousepos():
    """mousepos() --> (x, y) get the mouse coordinates on the screen (linux, Xlib)."""
    data = display.Display().screen().root.query_pointer()._data
    return data["root_x"], data["root_y"]


class MouseThread(threading.Thread):
    def __init__(self, parent, label):
        threading.Thread.__init__(self)
        self.label = label
        self.killed = False

    def run(self):
        try:
            while True:
                if self.stopped():
                    break
                text = "{0}".format(mousepos())
                self.label.set_text(text)
                sleep(0.01)
        except (KeyboardInterrupt, SystemExit):
            sys.exit()

    def kill(self):
        self.killed = True

    def stopped(self):
        return self.killed


class PyApp(gtk.Window):

    def __init__(self):
        super(PyApp, self).__init__()

        self.set_title("Mouse coordinates 0.1")
        self.set_size_request(250, 50)
        self.set_position(gtk.WIN_POS_CENTER)
        self.connect("destroy", self.quit)

        label = gtk.Label()

        self.mouseThread = MouseThread(self, label)
        self.mouseThread.start()

        fixed = gtk.Fixed()
        fixed.put(label, 10, 10)

        self.add(fixed)
        self.show_all()

    def quit(self, widget):
        self.mouseThread.kill()
        gtk.main_quit()


if __name__ == '__main__':
    app = PyApp()
    gtk.main()

查看您提供的代码。您想要的信息来自def mousepos()。所以只要

from Xlib import display
data = display.Display().screen().root.query_pointer()._data
data["root_x"], data["root_y"]

您获取当前鼠标位置,将其放入循环中并写入/附加到文件。 这应该够了吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux中实时监控鼠标坐标 的相关文章

随机推荐

  • PyStan API 中的变分推理?

    我在其中找不到任何提及变分推理的内容PyStan 文档 https pystan readthedocs org en latest api html 尽管它已添加 http arxiv org abs 1506 03431在斯坦本身 我是
  • 在 mex 上使用整数数组

    我想将一个整数数组从 MATLAB 传递到 C 我尝试过使用 uint64 T 类型 但它总是崩溃 使用 mxGetPr 获取双指针工作正常 但我需要将内容类型转换为整数 并且在每次迭代中这样做可能会很慢 我在 mexFunction 中尝
  • 将 KeyDown 事件(按键)连接到一个 C# (wpf) 字符串

    我有一个磁卡读卡器 它使用键盘输入发送数据 我正在使用 KeyDown 事件来获取此对象 C WPF KeyEventArgs e 我想把我得到的钥匙做成一串 我尝试连接e Key ToString 但这不起作用 我的输入有很多数字和符号
  • 为什么我的 Google Actions Alpha 版本没有出现在 Google Assistant 商店中?

    在我的开发者帐户中 我可以使用模拟器成功测试应用程序 我也成功部署了Alpha版本 等了24小时 但是 那opt in链接不起作用 每次我导航到它时 我都会看到 We can t find what you re looking for a
  • MongoDB - 如何根据部分字符串查找不同的值

    我不确定这是否可能 但我想从 Mongo 不同方法中的 url 获取不同的域名 这是一些示例数据 stuff someValue moreStuff someOtherValue url http mydomain prep com pos
  • django Rest框架中的过滤

    在我的项目中 我使用 django Rest 框架 为了过滤结果 我使用 django filters 后端 有我的代码 模型 py from django db import models class Region models Mode
  • phpMyAdmin 无法在 PHP5.5.8 的 CentOS 6.5 上运行

    我有一台运行 nginx 1 0 15 PHP FPM FastCGI 5 5 8 和 MySQL 5 5 35 的 CentOS 6 5 x64 服务器 我已经安装了 phpMyAdmin 4 1 5 并配置了一个 nginx 虚拟主机
  • Laravel:注册表单打开时会话过期

    我有一个网络应用程序正在以信息亭模式等待笔记本电脑上的用户 有时 注册失败并且用户会看到错误屏幕 我认为是 419 会话已过期 因此 我假设登录屏幕加载两小时后 会话就会过期 我保留了默认值 120 分钟 config session ph
  • 使用 TerminateProcess 终止“mstsc.exe”进程时出现错误代码(5) 访问被拒绝

    我用CreateProcess 使用 mstsc exe 启动 rdp 客户端应用程序的函数 之后 我想终止它 所以我使用TerminateProcess 函数 但它失败 错误代码为 5 如果我用 notepad exe 替换 mstsc
  • 活动管理员允许的参数

    有没有办法从活动管理的 Permit params 块内部判断我是处于创建模式还是编辑模式 当我创建新记录时 我想合并created by和updated by 当我编辑现有记录时 我只想合并updated by 这是我的代码 Active
  • 如何对 Spring @Bean CommandLineRunner 进行单元测试?

    我在一个小型 PoC 中使用 Spring Boot 并且正在尝试测试 Bean 实现 我有这个代码 SpringBootApplication public class Application public static void mai
  • 从R中的alphahull中提取多个多边形

    我正在使用 alphahull 创建地图边界 结果有时是离散的船体 这很好 下面示例中的三个漂亮的集群 我可以使用 igraph 获取离散簇的数量 但我想关闭多边形 并且没有看到将点分配给正确簇的简单方法 我缺少什么 最终我想将对象作为多边
  • MAMP 和 PHP“SSL 操作失败,代码 1”

    EDIT我现在正在出差 iPhone 上的 Stack Exchange 应用程序上只有 SO 因此下面代码中的引号存在一些奇怪的格式 抱歉 我在真实代码中有真实的 两天来我一直在试图解决这个问题 还有一些其他问题 但是 只是想用file
  • Konva 拖拽无需移动拖拽元素

    我的问题是如何拖放形状 但克隆可拖动形状 并将该克隆拖动到可放置形状 我是 Konva 的新手 在查看文档和示例时 我可以找到如何拖放形状 我找到了形状克隆的参考 但我不知道如何做到这一点 如果有人能告诉我方法 我将不胜感激 谢谢 rect
  • 将模型追加到列表中

    我在创建模型列表时遇到问题 假设我已经创建了模型 gt rp lt rpart V41 data learnData method class 如果我直接创建列表 那就可以了 gt ll lt list rp rp rp gt class
  • -webkit-overflow-scrolling touch 不适用于固定元素

    我使用一个额外的样式表 其中包含以下内容来触摸设备 touch overflow x hidden overflow y scroll webkit overflow scrolling touch body overflow x hidd
  • 如何查找文件中特定行的字节位置

    从命令行查找文件中特定行的字节位置的最快方法是什么 e g linepos myfile txt 13 5283 我正在为一个大小为几 GB 的 CSV 编写一个解析器 如果解析器停止 我希望能够从上一个位置恢复 解析器是用 Python
  • 如何与张量流保存的模型预测器并行进行推理?

    张量流版本 1 14 我们当前的设置是使用张量流估计器进行实时 NER 即一次对一个文档进行推理 我们有 30 个不同的字段需要提取 每个字段运行一个模型 因此总共有 30 个模型 我们当前的设置使用 python 多重处理来并行进行推理
  • 如何构建一个累积的任一构建器

    我想为这两个表达式构建一个计算表达式 这很简单 type Result lt TSuccess gt Success of TSuccess Failure of List
  • Linux中实时监控鼠标坐标

    我需要一个 python 编码来在 Linux 中实时监控鼠标坐标 我发现下面的代码运行良好 但是鼠标坐标信息将显示在弹出的 GUI 窗口中 现在我不需要它在 GUI 窗口中显示 只需要将鼠标坐标信息保存到文本文件 日志文件 中 有人可以帮