PyAutoGUI write函数输入异常:QWERTZ键盘下+变为*的解决问询
PyAutoGUI非QWERTY键盘输入异常的解决方法
问题场景
使用PyAutoGUI向表单字段输入字符串时,部分特殊字符出现输入错误。示例代码如下:
user = "bjoern+admin" user_pos = auth_fenster.left + 220, auth_fenster.top + 150 pyautogui.click(user_pos) pyautogui.write(user, interval=0.05)
预期输入为bjoern+admin,但实际输入框显示为bjoern*admin。
问题原因
经排查,该问题源于使用QWERTZ键盘布局,PyAutoGUI的write()方法对非QWERTY键盘的特殊字符映射存在bug。切换为QWERTY键盘可正常工作,但这并非可行的长期解决方案。
可行的替代方案
通过剪贴板复制粘贴的方式绕过键盘映射问题,实现准确输入。具体实现代码如下:
import pyautogui import pyperclip def _workaround_write(text): """ 针对PyAutoGUI.write()在非QWERTY键盘下的bug的替代方案 通过复制文本到剪贴板再粘贴,替代直接输入 """ pyperclip.copy(text) pyautogui.hotkey('ctrl', 'v') pyperclip.copy('') # 测试对比 text_with_special_chars = '@/:;\\.ABCabc?!~^[]{}()' pyautogui.write(text_with_special_chars) # 输出://;\.ABCabc?§¨[]5° -> 异常 _workaround_write(text_with_special_chars) # 输出:@/:;\.ABCabc?!~^[]{}() -> 正常 :)
该方法可稳定处理包含特殊字符的文本输入,此方案由GitHub用户setvisible提供。
内容的提问来源于stack exchange,提问作者Björn Trier
相关产品推荐
相关产品推荐

