我正在使用此功能等待用户输入(y表示是,n表示否)。之所以方便,是因为它不需要按Enter键,而且我可以在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运行文件“ lib \ site-packages \ keyboard__init __。py”中的文件“ threading.py”,第864行,侦听文件中的第292行 监听中的“ lib \ site-packages \ keyboard_winkeyboard.py”,第560行,
文件“ lib \ site-packages \ keyboard_winkeyboard.py”,第553行,位于 prepare_intercept ctypes.ArgumentError:参数3::int太长而无法转换
有人想让它运行吗?
答案 0 :(得分:0)
您在这里有两个选择。第一个实际上很简单,您所要做的就是强制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)
答案 1 :(得分:0)
这就是我在程序中的操作方式。一切正常,并且pyinstaller没问题。
arguments:
$request: '@=service("request_stack").getCurrentRequest()'