【发布时间】:2021-12-28 05:21:42
【问题描述】:
所以我正在编写一些代码,以在随机时间范围后通过虚拟键随机发送按键(5-10 秒仅用于测试目的)。我正在尝试添加 Clock.schedule_once,但是根据我现在的情况,它每秒都会触发,因为它卡在了一个 while 循环中。我一直在绞尽脑汁想弄清楚如何正确实施这一点,但我似乎无法想出什么办法,所以我正在与你们联系,看看你们是否可以提供任何意见可能的解决方案。
def v_key_timer(self, timer, wnd):
while timer > 0:
vkey = self.char2key(self.get_char_key(randrange(1, 5)))
intrvl = randrange(5, 10) # Sets a random time between 1-4 minutes to do a keypress
self.select_window(wnd)
if (timer - intrvl) <= 0:
win32api.keybd_event(vkey, win32api.MapVirtualKey(vkey, 0), 0, 0) # Keypress Down
time.sleep(.5)
win32api.keybd_event(vkey, win32api.MapVirtualKey(vkey, 0), win32con.KEYEVENTF_KEYUP, 0) # Keypress Up
time.sleep(timer)
timer = 0
else:
win32api.keybd_event(vkey, win32api.MapVirtualKey(vkey, 0), 0, 0) # Keypress Down
time.sleep(.5)
win32api.keybd_event(vkey, win32api.MapVirtualKey(vkey, 0), win32con.KEYEVENTF_KEYUP, 0) # Keypress Up
time.sleep(intrvl)
timer -= intrvl
我希望在日志运行中让用户输入他们希望运行的时间,并为其创建一个倒数计时器供用户查看,但在此之前,我需要更改此操作的方式我设置的当前计时器系统正在运行,我认为 Clock.Schedule 可能是最好的选择,因为现在,当 time.sleep 运行时,程序不会关闭。
【问题讨论】: