按退出键退出循环

时间:2014-02-08 23:26:50

标签: python python-3.x

我试图通过按退出键退出循环,但我的程序不起作用。有没有办法做到这一点? 我的代码:

import win32api
import win32con
import time
from msvcrt import kbhit,getch

def clickerleft(x,y):
    """Clicks on given position x,y

    Input:
    x -- Horizontal position in pixels, starts from top-left position
    y -- Vertical position in pixels, start from top-left position

    """

    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)


def fonctionclic():
    while True :
        clickerleft(1193,757)
        time.sleep(0.1) 

while True :
    key = ord(getch())
    if key == 97: #a  
        fonctionclic()
    elif key == 27: #escap  
        break   

1 个答案:

答案 0 :(得分:3)

我不清楚你在代码中使用的两个while True循环要完成什么 - 所以我删除了其中一个,认为这可能符合你的要求:

import msvcrt
import win32api
import win32con
import time

def readch():
    """ Get a single character on Windows.
    see http://msdn.microsoft.com/en-us/library/078sfkak
    """
    ch = msvcrt.getch()
    if ch in b'\x00\xe0':  # arrow or function key prefix?
        ch = msvcrt.getch()  # second call returns the actual key code
    return ch

def clickerleft(x,y):
    """Clicks on given position x,y

    Input:
      x -- Horizontal position in pixels, starts from top-left position
      y -- Vertical position in pixels, start from top-left position
    """
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

print('Press Esc to quit or "a" to simulate mouse click')
while True :
    if msvcrt.kbhit():
        key = ord(readch())
        if key == 97:  # ord('a')
            clickerleft(1193,757)
        elif key == 27:  # escape key
            break
    time.sleep(0.1)
print('Done')