[Automatisierung] Bearbeiten Sie Maus und Tastatur mit Python

Wann möchten Sie Maus- / Tastaturoperationen automatisieren?

Mit Python ist es relativ einfach, "Dateien" wie Excel und "Apps" wie Webbrowser direkt zu bedienen.

Möchten Sie jemals Mausoperationen und Tastatureingaben automatisieren? Sie können das denken.

Es gibt viele Apps und Software auf der Welt. Wenn Sie freie Software einbinden, gibt es so viele Sterne wie es gibt. Wie erwartet unterstützt Python nicht alle diese Apps. Es gibt viele Apps **, die nicht direkt mit Python betrieben werden können.

Wenn Sie die Arbeit in einer solchen App automatisieren möchten, können Sie dies tun, indem Sie ** Maus- und Tastaturoperationen automatisieren **.

Wenn Menschen Apps bedienen, arbeiten sie zunächst mit Maus und Tastatur. Wenn Sie also Maus und Tastatur mit Python bedienen können, sollten Sie theoretisch (wahrscheinlich) alles automatisch bedienen können.

In diesem Artikel werde ich Ihnen zeigen, wie Sie Maus und Tastatur in Python bedienen.

Automatisieren Sie mit PyAuto GUI

Verwenden Sie zum Bedienen von Maus und Tastatur in Python eine Bibliothek mit dem Namen ** PyAutoGUI **.

pyautogui sollte nicht standardmäßig in Anaconda installiert werden. Installieren wir es also zuerst mit dem Befehl pip.

pip install pyautogui

Wenn Sie es erfolgreich installieren können, importieren Sie es.

python


import pyautogui

Mausbedienung

klicken

Klicken Sie mit der linken Maustaste auf "pyautogui.click ()".

Zu diesem Zeitpunkt stellt sich die Frage, wo geklickt werden soll. Sie können die Klickposition jedoch mit den folgenden drei Mustern angeben.

Funktion Erläuterung
pyautogui.click() Aktuelle MauszeigerpositionKlicken
pyautogui.click(x, y) Koordinaten auf dem Monitor(x, y)Position vonKlicken
pyautogui.click('button.png') Bild der Schaltfläche, auf die Sie klicken möchtenGeben Sie an und klicken Sie dort

Ich werde im Detail erklären.

pyautogui.click()

Klicken Sie auf die aktuelle Mauszeigerposition. Verwenden Sie in diesem Fall die Befehle "pyautogui.moveTo ()" und "pyautogui.move ()", um den Mauscursor, der später beschrieben wird, zuerst an die gewünschte Position und dann "pyautogui.click ()" zu bewegen. Ich denke, es wird.

python


# (100, 200)Bewegen Sie den Mauszeiger an die Position von
pyautogui.moveTo(100,200)

#klicken
pyautogui.click()

pyautogui.click(x, y)

Klicken Sie auf die Position der Koordinaten (x, y) auf dem Monitor. Was sind diese Koordinaten (x, y)? Wenn Ihr Monitor beispielsweise eine Auflösung von 1920 x 1080 hat, ist oben links (0,0) und unten rechts (1919, 1079).

0,0       X increases -->
+---------------------------+
|                           | Y increases
|                           |     |
|   1920 x 1080 screen      |     |
|                           |     V
|                           |
|                           |
+---------------------------+ 1919, 1079

(Nachdruck aus dem offiziellen Dokument von PyAutoGui<https://pyautogui.readthedocs.io/en/latest/mouse.html>)

Da können Sie die Koordinaten des aktuellen Mauszeigers mit pyautogui.position () abrufen Es ist einfach, die Koordinaten zu überprüfen, indem Sie die Maus an die Position bewegen, auf die Sie klicken möchten, und pyautogui.position () ausführen.

python


#Überprüfen Sie die Koordinaten der Position, auf die Sie klicken möchten
print(pyautogui.position())

Ausführungsergebnis


Point(x=207, y=528)

python


#Klicken Sie auf die oben angegebenen Koordinaten
pyautogui.click(207, 528)

pyautogui.click('button.png')

Geben Sie das Bild der Schaltfläche an, auf die Sie klicken möchten ('button.png'), und klicken Sie darauf. Abhängig von der Größe und Position des App-Fensters sind die Koordinaten des Ortes, auf den Sie klicken möchten, möglicherweise nicht immer gleich.

In einem solchen Fall können Sie direkt auf die Position klicken, indem Sie ** das Bild des Ortes (Schaltfläche usw.) angeben, auf den Sie klicken möchten **.

Angenommen, Sie möchten in der Windows-App "Paint" auf die Zahl ** "☆" ** klicken.

paint_star.png

Schneiden Sie in diesem Fall den Teil ☆ als Bild aus ('star.png').

star.png

python


#Klicken Sie auf den Teil ☆
pyautogui.click('star.png')

Die Methode zum Angeben dieses Bildes ist sehr praktisch, aber in einigen Fällen wird die Position des Bildes möglicherweise nicht erkannt. Es sollte beachtet werden, dass es nicht in 100 Aufnahmen ist.

Klicken Sie auf Typ

pyautogui.click () war ein normaler ** Linksklick **. Wenn Sie einen weiteren Klick ausführen möchten, z. B. Rechtsklick oder Doppelklick, ersetzen Sie ihn durch die entsprechende Funktion (siehe unten).

Klicken Sie auf Typ Funktion
Rechtsklick pyautogui.rightClick()
Mittelklick(Radklick) pyautogui.middleClick()
Doppelklick pyautogui.doubleClick()

Bewegen Sie den Mauszeiger

Es gibt zwei Arten von Mauszeigerbewegungen. Der Unterschied besteht darin, ob das Ziel als absolute Position oder als relative Position angegeben wird.

Funktion Erläuterung
pyautogui.moveTo(x,y) Koordinaten auf dem Monitor(x,y)Geben Sie an und verschieben Sie sich dorthin
pyautogui.move(x,y) X seitlich von der aktuellen Position,Bewegen Sie y vertikal

pyautogui.moveTo(x,y) Geben Sie die Koordinaten (x, y) auf dem Monitor an und bewegen Sie sich dorthin. Es ist egal, wo du bist.

Sie können auch ** Zeit zum Verschieben ** als drittes Argument von moveTo () angeben. Wenn Sie keine Zeit angeben, wird diese sofort verschoben. Sie können sich jedoch langsam bewegen, indem Sie diese Zeit angeben.

python


# (100,100)In Position bewegen
pyautogui.moveTo(100,100)

# (100,100)Bewegen Sie sich in die Position von
pyautogui.moveTo(100,100,2)

pyautogui.move(x,y) Verschiebt x horizontal und y vertikal von der aktuellen Mauszeigerposition. move () kann auch die Zeit zum Verschieben angeben.

python


#Von der aktuellen Position(100,100)Beweg dich einfach
pyautogui.move(100,100)

#Von der aktuellen Position(100,100)Bewegen Sie sich einfach über 2 Sekunden
pyautogui.move(100,100,2)

ziehen

Es gibt zwei Arten des Ziehens, je nachdem, ob es sich um die absolute Position oder die relative Position des Ziels handelt. Zum Ziehen können Sie im dritten Argument auch ** Zeit zum Ziehen ** angeben.

Funktion Erläuterung
pyautogui.dragTo(x,y) Koordinaten auf dem Monitor von der aktuellen Position(x,y)Hin ziehen
pyautogui.drag(x,y) X seitlich von der aktuellen Position,Ziehen Sie y vertikal

python


#Von der aktuellen Position(100,100)Ziehen Sie an die Position von
pyautogui.dragTo(100,100,2)

Tastaturbedienung

Zeicheneingabe

Verwenden Sie pyautogui.write (), um Zeichen über die Tastatur einzugeben.

Klicken Sie auf das Textfeld usw., in das Sie einmal Zeichen eingeben möchten. Ich denke, Sie müssen den Zeichencursor aktivieren und dann pyautogui.write () ausführen.

python


#Klicken Sie auf die Stelle, an der Sie Zeichen eingeben möchten
pyautogui.click(100, 100)

#Zeicheneingabe
pyautogui.write('Hello world!')

Wenn Sie aus irgendeinem Grund nicht mit einer sehr hohen Geschwindigkeit eingeben möchten, können Sie die Anzahl der Sekunden zwischen den Zeicheneingaben mit "Intervall = xx" als Argument angeben, um Platz zwischen den Zeicheneingaben zu lassen.

python


#0 für jedes Zeichen.Eingabe in Intervallen von 25 Sekunden
pyautogui.write('Hello world!', interval=0.25)

Bitte beachten Sie, dass diese Methode ** kein Japanisch eingeben kann **! Wenn Sie also Japanisch eingeben möchten, verwenden Sie eine andere Methode.

Die Methode lautet ** Kopieren Sie die Zeichenfolge, die Sie eingeben möchten, und fügen Sie sie in die Zwischenablage ein. ** ** **

Verwenden Sie ** pyperclip **, um die Zwischenablage zu bearbeiten. Weiter unten finden Sie Details zur Verwendung von Pyperclip. Hier werde ich jedoch nur den Code beschreiben.

[Automatisierung] Bedienen Sie die Zwischenablage mit Python und fügen Sie die Tabelle in Excel ein https://qiita.com/konitech913/items/83975332e395a387eace

python


import pyperclip

#Kopieren Sie die eingegebene Zeichenfolge in die Zwischenablage
pyperclip.copy('Hallo Welt!')

# Ctrl+Einfügen mit v
pyautogui.hotkey('ctrl', 'v')

Tasteneingabe

Verwenden Sie pyautogui.press (), wenn Sie nur eine Taste drücken möchten, anstatt zu tippen.

python


#Drücken Sie die "Eingabetaste"
pyautogui.press('enter')

#Drücken Sie viermal die "linke Cursortaste"
pyautogui.press(['left', 'left', 'left', 'left'])

Verwenden Sie für ** Hotkeys ** wie "Strg + C (Einfügen)" und "Strg + Z (Rückgängig)" "pyautogui.hotkey ()".

python


# 「Ctrl+Z(Rückgängig machen)」
pyautogui.hotkey('ctrl', 'z')

Malen automatisieren

Lassen Sie uns abschließend das bisherige Wissen nutzen, um mit der "Farbe" zu zeichnen, die mit Windows geliefert wird.

Ändern Sie die Größe der ☆-Zahl, stapeln Sie 5 davon und geben Sie schließlich den Text ein.

python


#Erfassen Sie zuerst die Koordinaten
print(pyautogui.position()) #Wo Sie den Text einfügen möchten
print(pyautogui.position()) #☆ Startposition ziehen

Ausführungsergebnis


Point(x=300, y=285)
Point(x=476, y=566)

Sobald Sie die Koordinaten kennen, ist es Zeit, mit dem Zeichnen zu beginnen.

python


import pyautogui
import pyperclip

#Klicken Sie einmal, um das Malfenster zu aktivieren
pyautogui.click(732,22)

text_x=300
text_y=285

star_x=476
star_y=566

#☆ Zeichnung
stride = 50 #Erhöhen Sie ☆ mit einem Schritt
star_num = 5 #Anzahl von ☆

pyautogui.click('star.png')

#☆ starten_Zeichne so viele wie num
for i in range(star_num):
    pyautogui.moveTo(star_x-stride*i, star_y-stride*i, 1)
    pyautogui.drag(50+stride*i*2, 50+stride*i*2, 1)
    
#Text eingeben
pyautogui.click('text.png')

pyautogui.click(text_x, text_y)
pyperclip.copy('Es ist wie ein Stern Matroschka ...') #Kopieren Sie Japanisch einmal in die Zwischenablage
pyautogui.hotkey('ctrl', 'v') #Einfügen

** Ausführungsergebnis **

pyautogui_demo.gif

Wie war es? Wenn Sie Pyautogui beherrschen, scheint die Anwendung für die Automatisierung verschiedener Anwendungen effektiv zu sein.

Referenz

Hier sind die anderen Automatisierungsserien, die ich geschrieben habe. Bei Interesse bitte!

[Automatisierung] Extrahieren Sie die Tabelle als PDF mit Python https://qiita.com/konitech913/items/4ef70e1f7753c824b40f

[Automatisierung] Lesen Sie Word-Dokumente mit Python https://qiita.com/konitech913/items/c30236bdf47775535e2f

[Automatisierung] Konvertieren Sie Python-Code in eine exe-Datei https://qiita.com/konitech913/items/6259f13e057bc25ebc23

[Automatisierung] Senden Sie Outlook-E-Mails mit Python https://qiita.com/konitech913/items/51867dbe24a2a4272bb6

[Automatisierung] Lesen Sie Outlook-E-Mails mit Python https://qiita.com/konitech913/items/8a285522b0c118d5f905

[Automatisierung] Lesen Sie E-Mails (Nachrichtendatei) mit Python https://qiita.com/konitech913/items/fa0cf66aad27d16258c0

[Automatisierung] Bedienen Sie die Zwischenablage mit Python und fügen Sie die Tabelle in Excel ein https://qiita.com/konitech913/items/83975332e395a387eace

Recommended Posts

[Automatisierung] Bearbeiten Sie Maus und Tastatur mit Python
Automatisieren Sie Tastatur- und Mausoperationen mit Python, um die tägliche Arbeit zu optimieren [RPA]
Programmieren mit Python und Tkinter
Arbeiten Sie mit tkinter und Maus
Python und Hardware-Verwenden von RS232C mit Python-
[Python] Termin mit Mausschnittstelle
Bearbeiten Sie verschiedene Datenbanken mit Python
Python mit Pyenv und Venv
Holen Sie sich Tastaturereignis mit Python
Funktioniert mit Python und R.
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Leuchtendes Leben mit Python und OpenCV
Python-Maus- und Tastaturbedienung mit Pyautogui
Roboter läuft mit Arduino und Python
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Neuronales Netzwerk mit OpenCV 3 und Python 3
Scraping mit Node, Ruby und Python
[Automatisierung] Extrahieren Sie Outlook-Termine mit Python
[Mit Python automatisiert! ] Teil 1: Datei einstellen
Scraping mit Python, Selen und Chromedriver
Kratzen mit Python und schöner Suppe
[Automatisierung] Senden Sie Outlook-E-Mails mit Python
Bearbeiten Sie Dateien und Ordner in Python
JSON-Codierung und -Decodierung mit Python
Hadoop-Einführung und MapReduce mit Python
[GUI in Python] PyQt5-Drag & Drop-
Lesen und Schreiben von NetCDF mit Python
Ich habe mit PyQt5 und Python3 gespielt
Lesen und Schreiben von CSV mit Python
Mehrfachintegration mit Python und Sympy
[Mit Python automatisiert! ] Teil 2: Dateivorgang
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Sugoroku-Spiel und Zusatzspiel mit Python
FM-Modulation und Demodulation mit Python
Kommunizieren Sie mit gRPC zwischen Elixir und Python
Datenpipeline-Aufbau mit Python und Luigi
Berechnen Sie das Standardgewicht und zeigen Sie es mit Python an
Überwachen Sie Mojo-Ausfälle mit Python und Skype
FM-Modulation und Demodulation mit Python Part 3
Passwortlose Authentifizierung mit RDS und IAM (Python)
Python-Installation und Paketverwaltung mit pip
Verwenden von Python und MeCab mit Azure Databricks
POST verschieden mit Python und empfange mit Flask
Bilder mit Pupil, Python und OpenCV aufnehmen
Fraktal zum Erstellen und Spielen mit Python
Ein Memo mit Python2.7 und Python3 in CentOS
Verwenden Sie PIL oder Pillow mit Cygwin Python
Bearbeiten von DynamoDB-Daten mit Lambda (Node & Python)
Erstellen und entschlüsseln Sie Caesar-Code mit Python
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Lesen und Schreiben von JSON-Dateien mit Python
Umgang mit "Jahren und Monaten" in Python
Ich habe Numba mit Python3.5 installiert und verwendet
Tweet-Analyse mit Python, Mecab und CaboCha
Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch
Verkehrsüberwachung mit Kibana, ElasticSearch und Python
FM-Modulation und Demodulation mit Python Part 2
Mit Ruby (Rails) verschlüsseln und mit Python entschlüsseln
[Automatisierung] Lesen Sie Word-Dokumente mit Python
Laden Sie einfach mp3 / mp4 mit Python und youtube-dl herunter!