Python を使用したマウスとキーボードの自動化

Python を使用したマウスとキーボードの自動化

この記事では、次を使用してマウスとキーボードの動きを自動化する方法を説明します。 pyautogui Pythonのモジュール。このモジュールには Python がプリロードされていません。したがって、それをインストールするには、次のコマンドを実行します。 
 

 pip3 install pyautogui 


 

pyautoguiモジュールを使用したマウスの動きの制御


Python は、画面の座標系を使用してマウスを追跡および制御します。画面の解像度が 1920X1080 であると仮定すると、画面の座標系は次のようになります。 
 

PythonのGUI


 

    サイズ(): この関数は画面の解像度を取得するために使用されます。
     
Python
   import   pyautogui   print  (  pyautogui  .  size  ())   


このファイルを .py 拡張子を付けて保存し、ファイルを実行します。 
この Python コードは、size() 関数を使用して、画面解像度を x y 形式で出力します。 
出力: 
 

 (1920 1080) 


注: この記事で提供されているコードの一部は、geeksforgeeks IDE にはこれらのコードを実行するために必要なモジュールがないため、geeksforgeeks IDE では実行できない可能性があります。ただし、Python をインストールし、記事に記載されている手順に従うことで、これらのコードを PC 上でローカルに簡単に実行できます。 
 

    moveTo(): この関数を使用して、pyautogui モジュールでマウスを移動します。 
     
Python
   import   pyautogui   pyautogui  .  moveTo  (  100     100     duration   =   1  )   


このコードは、x 座標と y 座標とオプションの期間引数を受け取る moveTo() 関数を使用します。この関数は、マウス ポインタを現在の位置から X Y 座標に移動し、その移動には、duration 引数で指定された時間がかかります。この Python スクリプトを保存して実行すると、マウス ポインタが魔法のように現在の位置から座標 (100 100) に移動するのが確認できます。このプロセスには 1 秒かかります。 
 

    moveRel() 関数: マウス ポインタを前の位置に相対的に移動します。 
     
Python
   import   pyautogui   pyautogui  .  moveRel  (  0     50     duration   =   1  )   


このコードは、マウス ポインタを元の位置に対して相対的に (0 50) に移動します。たとえば、コードを実行する前のマウスの位置が (1000 1000) であった場合、このコードはポインタを 1 秒間で座標 (1000 1050) に移動します。 
 

    位置(): マウスポインタの現在位置を取得する関数。 
     
Python
   import   pyautogui   print  (  pyautogui  .  position  ())   


出力: プログラムの実行時にマウスが置かれていた座標。 
 

    クリック(): マウスをクリックしてドラッグするときに使用する機能。 
     
Python
   import   pyautogui   pyautogui  .  click  (  100     100  )   


このコードは、位置 (100 100) で通常のマウス クリックを実行します。 
マウスのドラッグ操作に関連する2つの機能があります ドラッグToとドラッグRel 。これらは、移動中にマウスの左ボタンを押したままにすることでドラッグを開始することを除いて、moveTo および moveRel 関数と同様に実行します。 
この機能は、ダイアログ ボックスを移動したり、MS ペイントの鉛筆ツールを使用して自動的に描画したりするなど、さまざまな場所で使用できます。ペイントで正方形を描くには: 
 

Python
   import   time   # a module which has functions related to time.    # It can be installed using cmd command:    # pip install time in the same way as pyautogui.   import   pyautogui   time  .  sleep  (  10  )   # makes program execution pause for 10 sec   pyautogui  .  moveTo  (  1000     1000     duration   =   1  )   # moves mouse to 1000 1000.   pyautogui  .  dragRel  (  100     0     duration   =   1  )   # drags mouse 100 0 relative to its previous position    # thus dragging it to 1100 1000   pyautogui  .  dragRel  (  0     100     duration   =   1  )   pyautogui  .  dragRel  (  -  100     0     duration   =   1  )   pyautogui  .  dragRel  (  0     -  100     duration   =   1  )   


コードを実行する前に、鉛筆ツールを選択してバックグラウンドで MS ペイントを開きます。ここでコードを実行し、10 秒前に MS ペイントにすばやく切り替えます (プログラムを実行する前に sleep() 関数を使用して 10 秒の一時停止時間を与えているため)。 
10 秒後、MS ペイントで左上のエッジが 1000 1000、エッジの長さが 100 ピクセルの正方形が描画されていることがわかります。

    スクロール(): スクロール関数にはいいえがかかります。引数としてピクセル数を指定し、指定されたピクセル数まで画面をスクロールします。
     
Python
   import   pyautogui   pyautogui  .  scroll  (  200  )   


このコードは、アクティブな画面を最大 200 ピクセルまでスクロールします。 
 

    タイプライト(): typewrite() 関数を使用すると、文字列の入力を自動化できます。この関数の引数として入力したい文字列を渡すだけです。 
     
Python
   import   pyautogui   pyautogui  .  click  (  100     100  )   pyautogui  .  typewrite  (  'hello Geeks !'  )   


画面上の座標 100 100 にテキスト フィールドが存在すると仮定すると、このコードはテキスト フィールドをクリックしてアクティブにし、「hello Geeks!」と入力します。その中で。 
 

    キー名を渡す: typewrite() 関数を使用して、キー名を個別に渡すことができます。 
     
Python
   import   pyautogui   pyautogui  .  typewrite  ([  'a'     'left'     'ctrlleft'  ])   


このコードは、左矢印キーを押しながら「a」を入力し、左 Control キーを押すことと自動的に等価です。 
 

    ホットキーの組み合わせを押す: hotkey() 関数を使用して、ctrl-c ctrl-a などのキーの組み合わせを押します。
     
Python
   import   pyautogui   pyautogui  .  hotkey  (  'ctrlleft'     'a'  )   


このコードは、左 Ctrl と 'a' を同時に押すことと自動的に等価です。したがって、ウィンドウでは、これにより、画面上に存在するすべてのテキストが選択されることになります。

例:

WhatsApp でメッセージを送信し、全員に自動的にメッセージを削除します。これを実行するには、Chrome で Whatsapp をすでに開いている必要があります。このコードを実行した後、Chrome で WhatsApp タブを開きます。

Python3
   import   pyautogui   as   pg   import   time   def   delete_for_everyone  ():   pg  .  click  (  807     979  )   pg  .  typewrite  (  'hello'  )   pg  .  typewrite  ([  'enter'  ])   time  .  sleep  (  2  )   pg  .  click  (  1621     896  )   pg  .  click  (  1621     896  )   # time.sleep(1)   pg  .  click  (  1693     859  )   # time.sleep(1)   pg  .  click  (  1014     669  )   # time.sleep(1)   pg  .  click  (  1111     605  )   a  =  20   time  .  sleep  (  10  )   while  (  a  !=  0  ):   delete_for_everyone  ()   a  =  a  -  1   

 

クイズの作成