作为一个更大项目的一部分,我正在尝试创建一个与 Mac OS X 快照类似的快照工具。它应该需要第一次单击,第二次单击,并返回由正方形创建的区域的图像。
我有一些 python 函数,它们采用第一个点 (x, y) 和第二个点 (x, y) 并创建这些点在屏幕截图上创建的正方形的快照。缺少的部分是获取初始单击和第二次单击的鼠标位置,然后将该数据传递给 python 程序以创建快照。
换句话说,程序的流程应该是:
- 第一次点击(保存x,y)
- 第二次点击(保存 x2,y2)
- 使用保存的点击数据运行 snapshot.py 以返回屏幕截图
我只找到了可以返回帧内指针位置的解决方案。如果有帮助,我正在使用“import gtk”和“from Xlib import display”
编辑:我尝试使用 Tkinter 制作一个覆盖整个屏幕的隐形框架。这个想法是使用那个不可见的框架来获得两次鼠标点击的确切坐标,然后不可见的框架会消失,将坐标传递给屏幕截图函数,然后就可以完成了。但是,我一直在编写的代码并没有保持框架透明。
编辑2:此代码可以创建一个窗口,使其透明,将其调整为屏幕大小,然后返回该窗口上的鼠标坐标。我可以使用它来简单地通过两次单击返回鼠标坐标,然后删除窗口并将这些坐标发送到快照代码。当我在 python shell 中逐行运行以下代码时,它可以完美运行。但是,每当我将代码作为一个整体运行时,它似乎会跳过使窗口透明的部分。即使我将包含'attributes(“-alpha”,0.1)'的代码块复制并粘贴到python shell中,它也会忽略该行。
from Tkinter import *
root = Tk()
root.attributes('-alpha', 0.1)
maxW = root.winfo_screenwidth()
maxH = root.winfo_screenheight()
root.geometry("{0}x{1}+0+0".format(maxW, maxH))
def callback(event):
print "clicked at: ", event.x, "and: ", event.y
root.bind("<Button-1>", callback)
def Exit(event):
root.destroy()
root.bind("<Escape>", Exit)
# root.overrideredirect(True)
root.mainloop()
我愿意使用任何 c 或 c++ 代码或任何语言的代码来返回单击鼠标的坐标。这个人写了一些代码来让计算机在给定的点上点击,这可能和我的问题在同一个轨道上。