11

Pythonでマウスとキーボードを制御するにはどうすればよいですか?

アイデアは、JavaのRobot()クラスと同じことを行うことです。次のように言うことができます。マウスをここからここに移動し、そこをクリックして、画面に表示されているものをすべて書き込みます。

Windowsにはwin32apiがありますが、私は主にLinuxを使用しています。

LinuxにはXlibがありますが、キーボードでも機能しますか?(マウスへの参照のみが見つかりました)

クロスプラットフォームソリューションはありますか?(Linux、Windows、さらにはOS Xも素晴らしいでしょう。)

4

8 に答える 8

6

私はdogtail(https://fedorahosted.org/dogtail/)を使用してそのようなことを行います。これを使用して、Linux(Ubuntu)アプリの自動テストフレームワークを作成しました。そのフレームワークはボタンをクリックし、テキストフィールドに入力します。

geditの例https://fedorahosted.org/dogtail/browser/examples/gedit-test-utf8-procedural-api.pyを参照してください

したがって、ドッグテールを使用します。

dogtail.rawinput.click(100, 100)
于 2009-12-22T14:54:46.530 に答える
3

PyAutoGUIをお勧めします。これにより、マウスとキーボードをフルコントロールしてスクリーンショットを取得でき、画面内の画像を見つけることもできます(ボタンはどこにありますか?)。これは、クリックを動的に自動化するのに非常に便利です。Windows、macOS、Linuxで動作します。

例えば:

>>> import pyautogui
>>> screenWidth, screenHeight = pyautogui.size()
>>> pyautogui.moveTo(screenWidth / 2, screenHeight / 2)

はじめにページをご覧ください。

于 2015-11-16T08:07:42.033 に答える
2

これは完全に機能します...少なくともMacでは。これはクリックアンドドラッグなどのためのものですが、それに応じて後付けすることができます。

#!/usr/bin/python
import sys
import time
from Quartz.CoreGraphics import * # imports all of the top-level symbols in the module

def mouseEvent(type, posx, posy):
    theEvent = CGEventCreateMouseEvent(None, type, (posx,posy), kCGMouseButtonLeft)
    CGEventPost(kCGHIDEventTap, theEvent)
def mousemove(posx,posy):
    mouseEvent(kCGEventMouseMoved, posx,posy);
def mouseclickdn(posx,posy):
    mouseEvent(kCGEventLeftMouseDown, posx,posy);
def mouseclickup(posx,posy):
    mouseEvent(kCGEventLeftMouseUp, posx,posy);
def mousedrag(posx,posy):
    mouseEvent(kCGEventLeftMouseDragged, posx,posy);

ourEvent = CGEventCreate(None);
currentpos=CGEventGetLocation(ourEvent); # Save current mouse position
mouseclickdn(60, 100);
mousedrag(60, 300);
mouseclickup(60, 300);
time.sleep(1);
mousemove(int(currentpos.x),int(currentpos.y)); # Restore mouse position
于 2011-08-16T02:14:21.113 に答える
1

これがあなたのためのPythonフォーラムからの興味深いスレッドです: Pythonフォーラム

編集:マウスコントロールに関するstackoverflowに関する興味深い質問もありました...多分それは良い出発点です..Pythonによる マウスコントロール

回答の1つは、Linuxの例を参照しています...これにより、すばらしいブログエントリが表示されます。

于 2009-12-22T12:58:48.650 に答える
1

マウスの場合、動作しているように見えるpymouseを見つけました(完全には試していません。クリックするには小さなハックが必要です。問題を参照してください)。

キーボードの場合、Xlibがその仕事をすることができるかどうかはわかりません。私はまだ何かを書く方法を探していますが、ここで説明されているように、またはここでXlibを使用してCで重要なイベントをキャッチできます(ただし、Cはわかりません)。

これはgnomeのみで動作する例です(まだ十分ではありません)

pymouseでは、3つの異なるプラットフォームで動作させるための優れた方法がありますが、3つのコードを作成する必要があります...

于 2009-12-22T13:26:31.760 に答える
1

コンソールの場合は、ncursesまたはスラングを試してください。他の状況では、PyQt、PyGtk、TkInterを試してください。

このソリューションはすべてクロスプラットフォームであり、ほとんどどこでも機能します。

于 2009-12-22T14:17:34.400 に答える
1

LinuxにはXlibがありますが、キーボードでも機能しますか?(マウスへの参照のみが見つかりました)

はい、キーボードでも機能します。

于 2009-12-23T15:33:11.780 に答える
0

Linux、Windows、Macでのクロスプラットフォームソリューションはautopyです。 https://github.com/msanders/autopy/

これにより、マウスとキーボードの制御、スクリーンショットの撮影、大きなビットマップ上の小さなビットマップの検索が可能になり、制御できないGUIアプリケーションを自動化する場合に非常に便利です。

于 2015-05-05T20:53:04.527 に答える