Erhalte Mausereignisse außerhalb des Tkinter-Fensters in Python

8

Ich schreibe ein Programm, das wie ein externes Plug-in eine Verbindung zur Design-Software herstellt und dann Mausbewegungen und Ereignisse überwacht. Es werden Aktionen basierend auf dem Status der verbundenen Software-Mausereignisse ausgeführt.

Die Idee ist, dass die externe Anwendung die Möglichkeit haben wird, sich an mehrere ähnliche Programme anstelle von programmspezifischen Plugins anzuschließen.

Der Prototyp und möglicherweise die Produktionssoftware wird unter Verwendung der Tkinter-GUI-Bibliothek in Python geschrieben. Der Versuch ist es einfach und tragbar zu machen.

Ich war leicht in der Lage, die Mausposition auf "OS" -Pegel zu nehmen (echter Bildschirm X, Y), ohne dass das Tkinter-Fenster aktiv sein musste. Mein Problem ist, dass ich keine Möglichkeit finde, die Mausklick-Ereignisse von Tkinter zu bekommen. Ich kann Ereignisse nur über das aktive Tkinter-Fenster sammeln.

Tkinter liefert dies für die Mausposition:

%Vor%

Ich kann ähnliche Ergebnisse für Mausereignisse nicht finden. Es gibt Bibliotheken wie selfspy und Pymouse (jetzt Teil von PyUserInput), die Ereignisse überwachen, aber hauptsächlich zur Steuerung der Eingabegeräte dienen. Meine Backup-Idee besteht darin, diese Bibliotheken als Referenz für das Schreiben meines eigenen Überwachungsprogramms zu verwenden.

Meine zwei Hauptplattformen sind Mac und Windows.

Lange Rede kurzer Sinn:

  • Kann Tkinter mir Mausereignisse geben, wenn die Ereignisse außerhalb der Tkinter Fenster.
  • Wenn nicht, gibt es andere Optionen "out of the box", die mir Maus X, Y und Maus Ereignisse geben können.
  • Wenn es keine Out-of-the-Box-Lösungen gibt, einige Empfehlungen zu Ansatz und API. (sieht aus wie win32api für Windows, Quartz und / oder Cocoa in Mac und Xlib in Linux)

Danke für Ihre Zeit

    
TravisT 25.09.2015, 02:28
quelle

2 Antworten

1

Auf diese Weise erhalten Sie die Mausposition mit TKinter .

%Vor%

Es gibt ein plattformübergreifendes Modul pyautogui (funktioniert für os x, windows, linux).

%Vor%

In diesem Artikel erfahren Sie, wie Sie die Mausklicks erkennen Windows

    
Tristan T 10.06.2016 13:32
quelle
1

Unter Mac ist die einfachste Option wahrscheinlich NSEvent s addGlobalMonitorForEventsMatchingMask:handler: : Ссылка :

Beachten Sie, dass dies speziell für Ereignisse gilt, die an andere Anwendungen gesendet werden und nicht an Ihre eigenen.

Auf einer niedrigeren Ebene können Sie auch die Verwendung von Quartz Event Taps überprüfen. Einfaches Beispiel mit PyObjC:

%Vor%

(Ich fürchte, ich kann keine detaillierten Angaben zu einer Windows-Lösung machen.)

    
Jomel Imperio 15.06.2016 14:20
quelle

Tags und Links