2017-06-28 8 views
-5

Ich möchte damit beginnen, indem ich sage, dass ich neu bei Python bin, also tut es mir leid, wenn diese Frage für Sie dumm klingen wird.Wie löst man eine Funktion aus, indem man in Python mit der linken Maustaste klickt?

Ich bin nur auf der Suche nach einer einfachen Möglichkeit, eine Funktion auszulösen, wenn ich den linken Mausklick drücke. Kann mir jemand illustrieren, wie man das erreicht? Beispiele werden sehr geschätzt.

Mein Code jetzt:

import win32api 
import win32con 
import time 
from random import randint 
import pythoncom, pyHook 

def OnMouseEvent(event): #triggers mouseClick function 
    mouseClick(event) 
    return True 

def mouseClick(event): 

    if event.MessageName == "mouse left up": # makes sure that's the event I'm looking for 
     a = True # disables hm.MouseAll 
     return a 
     time.sleep(0.01) 
     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) 
     time.sleep(0.005) 
     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) 
     time.sleep(0.01) 
     a = False # enables hm.MouseAll back 
     return a 


a = False  
# create a hook manager 
hm = pyHook.HookManager() 
# set the hook 
hm.HookMouse() 
# wait forever 
pythoncom.PumpMessages() 
# watch for all mouse events 
while True: 
    if a == False: 
     hm.MouseAll = OnMouseEvent # Triggers OnMouseEvent function  
    else: 
     pass 
+0

Anstatt 'print (" Mouse clicked ")', rufen Sie einfach Ihre Funktion. – martineau

Antwort

0

Was ich verstehe, ist, dass Sie bereits eine Funktion bereit haben. Ich würde das Pygame-Paket dafür verwenden.

for event in pygame.event.get():  
    if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1: 
     nameoffunction() 

die Nummer 1 in event.button == 1: Ändern wird das, was sich ändern Maustaste angeklickt wird.

EDIT 1

run = 1 
while run == 1: 
    if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1: 
     print("Message") 

PyGame ein Fenster erfordert also, wenn Sie nur einen Klick testen möchten, würde ich dann verwenden ...

EDIT 2

if win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0): 
    print("Message") 

x, y = x und y Startkoordinaten für Box-Ecke 0,0 = Andere Ecke für Box (glaube ich) wissen, ob die Maus innerhalb der "Box" ist und Sie klicken, es sollte funktionieren (Ich habe win32api nicht installiert, also habe ich keine Tests mit diesem ausgeführt)

+0

Ich weiß nicht warum, aber ich verstehe immer noch nicht, was ich will. Ich habe meine Funktion noch nicht fertig, aber ich habe es ausprobiert, indem ich einen Ausdruck als Ergebnis des if gesetzt habe. Das Problem ist, dass nichts gedruckt wird, wenn ich mit der linken Maustaste klicke D: – Beter

+0

Ich postete meinen Code in einer anderen Antwort, wäre toll, wenn Sie einen Blick darauf werfen könnten. – Beter

+0

Ok, also zuerst willst du eine grundlegende While-Schleife machen und die 'für Event'-Sache in diese einfügen. So läuft der Code immer wieder. 'run = 1 während run == 1: für ereignis ..... ' – cmdtvt

Verwandte Themen