Comment puis-je contrôler la souris et le clavier dans Python? P>
L'idée est de faire la même chose que le Robot () Classe en Java. Soyez capable de dire: déplacez la souris d'ici ici, cliquez sur là, écrivez ce qui est à l'écran. P>
pour Windows Il y a Win32api mais j'utilise principalement Linux. P>
Pour Linux, il y a XLIB mais cela fonctionne-t-il aussi pour le clavier? (trouvé seulement référence à la souris) p>
Y a-t-il une solution croisée? (Linux, Windows et même OS X seraient le grand.) P>
8 Réponses :
Voici un thread de l'interessesse du forum Python pour vous: Python Forum P>
EDIT: Il y avait aussi une question d'interessation sur Stackoverflow concernant la maîtrise de la souris ... peut-être que c'est un bon point de départ .. Contrôle de la souris avec Python P>
Une des réponses se réfère à un exemple de Linux ... qui vous dirige vers une belle entrée de blog. P>
Drôle, je viens d'envoyer le même lien vers Dominic Rodger. Cela fonctionne sur Windows seulement je pense (Windll.user32.Setcursorpose ne sonne pas bien)
Pour la souris, j'ai trouvé pymouse qui semble fonctionner (i Haven 't pleinement essayé, un petit piratage nécessaire pour le clic, cf les problèmes) p>
Pour le clavier, je ne suis pas sûr que XLIB peut faire le travail. Je regarde toujours comment écrire quelque chose, mais vous pouvez attraper un événement clé comme expliqué ici < / a> ou en c ici en utilisant XLIB ( mais je ne sais pas c). p>
ici est un exemple de travail sur Gnome seulement (pas assez bon encore) p>
Dans Pymouse, ils ont une bonne façon de le faire fonctionner sur la plate-forme 3 différente mais doit faire 3 code ... p>
Pour la console, essayez les ncurses ou l'argot. Dans une autre situation, essayez Pyqt, Pygtk, Tkinter. P>
Toute cette solution est multiplate-forme et travaille presque n'importe où. p>
Il est déjà triste de ne pas trouver une solution pour Windows et Linux, donc une solution différente si vous utilisez GTK ou QT ne semble pas bonne. Et de toute façon, je ne comprends pas ce que vous dites à utiliser. Quelle méthode? comment ?...
Pourquoi GTK ou QT vous semble-t-il pas bon? Tkinter autant que je sache est intégré à Python par défaut !!!
Hm. Peut-être que vous voulez imiter l'action utilisateur?
Oui c'est fondamentalement ce que je veux faire. Je veux pouvoir dire partir d'ici ici, cliquez là-bas et écrivez que tout ce qui est à l'écran. Puis-je le faire avec Pyqtk, Pygtk ou Pkinter?
Il doit être disponible via Pygtk. À propos d'une autre boîte à outils, je ne suis pas sûr.
trouvé ce fil: Stackoverflow.com/questions/ 860013 / ... qui conseille également à utiliser GTK. Mais je ne vois toujours pas comment déplacer la souris ou envoyer un événement de clavier. Je ne vois que la fonction pour attraper un événement
J'utilise dogtail ( https://fedorahosted.org/dogtail/ ) pour faire de telles choses, En utilisant cela, j'ai créé un cadre de test automatisé pour l'application Linux (Ubuntu). Ce cadre clique sur les boutons et les types dans des champs de texte.
Voir l'exemple Gedit, https://fedorahosted.org/dogtail/browser/examples/gedit-test-utf8-procédrial-api.py P>
Utilisez donc dogtail, par exemple P >
dogtail.rawinput.click(100, 100)
Génial, le module RAWINPUT semble avoir tout ce dont j'ai besoin, merci beaucoup. J'ai lu que pour la fonction de tester réellement des applications (détecter les menus, ...) Ne travaillez que pour GNOME. Le module RAWINPUT fonctionne-t-il pour une autre interface graphique? (De toute façon c'est une source ouverte, je peux avoir un look)
Savez-vous pourquoi si je fais un dogtail.rawinput.click (x, y) je dois faire un dogtail.rawinput.presskey ('a') sinon rien n'arrive ???
J'ai envoyé un rapport de bogue. Pouvez-vous essayer le morceau de code? bugzilla.gnome.org/show_bug.cgi?id=605302
Cela fonctionne pour moi sur Ubuntu 9.10 32 bits, pas sur Debian Sid AMD64 et Archlinux AMD64. Un bug de la version 64 bits?
Y a-t-il quelque chose de pareil pour Windows?
Pour Linux, il y a XLIB mais cela fonctionne-t-il aussi pour le clavier? (trouvé seulement référence à la souris) p> blockQuote>
Oui, cela fonctionne pour le clavier également. P>
Super et je pense que XLIB est plus générique que GTK (CF XLIB's Page sur Wikipedia) mais identique à celle de Pygtk, je ne vois pas la fonction de le faire ...
OK trouvé avec xlib: pymouse pour la souris et ici ( Tuxisalive.com/ Tux-Droid-Forum / Tux-gadgets / 245877021 ) pour le clavier
Cela fonctionne totalement ... sur un Mac au moins. Ceci est pour un clic et glisser, etc. Mais peuvent être installés en conséquence.
#!/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
Une solution de plate-forme croix sur Linux, Windows et Mac est autopopie. https://github.com/msanders/autopy/ p>
Il permet de contrôler la souris et le clavier, en prenant des captures d'écran et de trouver de petits bitmaps sur des bitmaps plus importants et doit être très pratique si vous souhaitez automatiser une application GUI, vous n'avez aucun contrôle. P>
Je peux vous conseiller Pyautogui , il permet de contrôler la souris et du clavier complet et obtenir des captures d'écran Et même vous pouvez localiser des images dans l'écran (comme: où est le bouton?), très utile pour automatiser de manière dynamique. Il fonctionne pour Windows, MacOS et Linux.
Par exemple: P>
>>> import pyautogui >>> screenWidth, screenHeight = pyautogui.size() >>> pyautogui.moveTo(screenWidth / 2, screenHeight / 2)
Le puissant de Python, mais je ne pense pas que ce soit assez puissant pour vous permettre de contrôler un clavier et une souris. J'aimerais que je puisse réellement faire ma souris zoom sur mon bureau en utilisant Python, mais je ne pense pas que ça va se passer. ;-)
Une bonne solution pour Windows uniquement python-forum.org/pythonforum/ Viewtopic.php? F = 2 & T = 8976 Je recherche la même chose pour Linux ou plate-forme inter-plateforme
Hm. Peut-être que vous voulez imiter l'action utilisateur?
duplicatal possible de Y a-t-il un python équivalent au robot AWT de Java classe?
Related: Contrôle de la souris avec Python .
Duplicaté possible de Quel est le moyen le plus simple Simuler le clavier et la souris sur Python?