用按键中断Python无限while循环

0 投票
2 回答
10727 浏览
提问于 2025-04-18 17:25

我正在写一个简单的脚本,目的是让我的电脑不进入睡眠状态(因为我没有管理员权限),这个脚本主要是通过一个无限循环来实现的,代码里有一句“while True”。

import time, win32api
cursorX = 0
cursorY = 0
while True:
    cursorX, cursorY = win32api.GetCursorPos()
    time.sleep(600)
    cursorX = cursorX + 10
    win32api.SetCursorPos((cursorX,cursorY))
    cursorX, cursorY = win32api.GetCursorPos()
    time.sleep(600)
    cursorX = cursorX - 10
    win32api.SetCursorPos((cursorX,cursorY))

现在,我可以通过按 Ctrl + C 来中断这个循环,但我想找个更干净的方法来结束它。有没有简单的方法可以设置一个条件,让它在我按下某个键时停止循环?我猜这可能和事件有关,但我对这方面了解不多。

2 个回答

3

我添加的最后三行代码可以让你在按下任何键的时候跳出这个循环。别忘了要导入msvcrt这个模块哦。

import time, win32api
import msvcrt
cursorX = 0
cursorY = 0
while True:
    cursorX, cursorY = win32api.GetCursorPos()
    time.sleep(600)
    cursorX = cursorX + 10
    win32api.SetCursorPos((cursorX,cursorY))
    cursorX, cursorY = win32api.GetCursorPos()
    time.sleep(600)
    cursorX = cursorX - 10
    win32api.SetCursorPos((cursorX,cursorY))
    if msvcrt.kbhit():
        if ord(msvcrt.getch()) != None:
            break
4

为了更好地处理按下CTRL-C这个操作,我们可以用一种叫做try-except的方式来捕捉这个中断信号。这样做的好处是,当你按下CTRL-C时,可以优雅地处理这个情况,而不是让程序直接崩溃。下面是一个简单的代码示例:

try:
    while True:
        ...
        ...
except KeyboardInterrupt:
    exit

撰写回答