大規模なプロジェクトの一環として、Mac OS X スナップショットと同様に機能するスナップショット ツールを作成しようとしています。1 回目のクリックと 2 回目のクリックで、正方形によって作成された領域の画像が返されます。
最初のポイント(x、y)と2番目のポイント(x、y)を取り、それらのポイントがスクリーンショット上に作成する正方形のスナップショットを作成するPython関数がいくつかあります。欠落している部分は、最初のクリックと 2 回目のクリックのマウス位置を取得し、そのデータを python プログラムに渡してスナップショットを作成することです。
つまり、プログラムの流れは次のようになります。
- 最初のクリック (x、y を保存)
- 2 回目のクリック (x2、y2 を保存)
- 保存されたクリックされたデータを使用してsnapshot.pyを実行し、スクリーンショットを返します
フレーム内のポインターの位置を返すことができるソリューションしか見つかりませんでした。それが役立つ場合は、「import gtk」と「from Xlib import display」を使用しています
編集: Tkinter を使用して、画面全体を覆う非表示のフレームを作成しようとしました。アイデアは、その目に見えないフレームを使用して 2 回のマウス クリックの正確な座標を取得することでした。その後、目に見えないフレームが消え、座標がスクリーンショット関数に渡され、それが実行されます。しかし、私が書いてきたコードはフレームを透明に保ちません。
編集 2: このコードは、ウィンドウを作成し、透明にし、画面に合わせてサイズを変更し、そのウィンドウのマウス座標を返すことができます。これを使用して、2 回のクリックでマウスの座標を返すだけで、ウィンドウを削除して、それらの座標をスナップショット コードに送信できます。Pythonシェルで以下のコードを1行ずつ実行すると、完全に機能します。ただし、コード全体を実行すると、ウィンドウを透明にする部分がスキップされるようです。「attributes("-alpha", 0.1)」を含むコード ブロックをコピーして Python シェルに貼り付けても、その行は無視されます。
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++ コード、または任意の言語のコードを使用することにオープンです。この男は、特定のポイントでコンピューターをクリックするように実際にコードを書きました。これは、私の問題と同じ軌道に乗っている可能性があります。