如何在没有OverflowError的情况下等待键盘输入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在没有OverflowError的情况下等待键盘输入相关的知识,希望对你有一定的参考价值。
我正在使用此函数来等待用户输入(y表示是,n表示否)。它很方便,因为它不需要按回车键,我可以使用GUI(无需在控制台中书写)。
import keyboard
def WaitingForYOrN():
while True:
if keyboard.is_pressed("y"):
return True
elif keyboard.is_pressed("n"):
return False
但是当我在使用PyInstaller的exe文件中编译它时,会发生以下错误:线程Thread-1中的异常:
回溯(最近一次调用最后一次):文件“threading.py”,第916行,在_bootstrap_inner文件“threading.py”,第864行,在运行文件“lib site-packages keyboard__init __。py”,第292行,在listen中文件“lib site-packages keyboard_winkeyboard.py”,第560行,在listen中 文件“lib site-packages keyboard_winkeyboard.py”,第553行,在prepare_intercept中ctypes.ArgumentError:参数3 :: int太长,无法转换
有人有想法让它运行吗?
你有几个选择。第一个实际上非常简单,你所要做的就是强制pyInstaller使用32位Python而不是它可能使用的64位版本。第二个有点复杂,涉及修改键盘导入的源代码。转到keyboard_winkeyboard.py第555行并将keyboard_hook = SetWindowsHookEx(WH_KEYBOARD_LL, keyboard_callback, GetModuleHandleW(None), None)
替换为keyboard_hook = SetWindowsHookEx(WH_KEYBOARD_LL, keyboard_callback, ctypes.c_ulonglong(GetModuleHandleW(None)), None)
这就是我在程序中的表现。它工作正常,并没有pyinstaller的问题。
print('Would you like to check somewhere else?')
print('[1] Yes')
print('[2] No')
variable1=int(input('Please enter choice: '))
if variable1 == 1:
do this
elif variable1 == 0:
do something else
以上是关于如何在没有OverflowError的情况下等待键盘输入的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 IdlingResource 的情况下在 Espresso 中等待异步任务
如何在没有“快速失败”行为的情况下并行等待多个承诺? [复制]
如何在没有 IllegalMonitorStateException 的情况下在 Java 中使用等待和通知?