Ubuntu下同时使用Pyautogui与Keyboard模块的权限冲突问题
解决Pyautogui与Keyboard模块的权限冲突问题
针对Linux环境下两个模块的权限矛盾,提供两种可行方案:
方案一:给root用户添加X显示授权
当用sudo运行脚本时,Pyautogui无法连接X显示是因为root没有当前用户的X授权,执行以下步骤解决:
- 普通用户终端执行:
会得到类似xauth list $DISPLAYyour-hostname:1 MIT-MAGIC-COOKIE-1 1234abcd5678efgh的授权记录 - 将该记录导入root的授权列表:
sudo xauth add $(xauth list $DISPLAY) - 现在用
sudo python3 your_script.py运行脚本,两个模块即可正常工作。
方案二:用pynput替代Keyboard模块
Keyboard的.is_pressed()方法需要root权限,而pynput库的键盘功能无需root,可直接在普通用户环境下运行,同时兼容Pyautogui:
示例代码:
import pyautogui from pynput.keyboard import Key # 检测单个按键是否按下(比如ESC键) from pynput.keyboard import Controller keyboard = Controller() is_esc_pressed = keyboard.is_pressed(Key.esc) # 或者监听按键事件 from pynput.keyboard import Listener def on_key_press(key): if key == Key.space: print("空格被按下") elif key == Key.esc: return False # 停止监听 with Listener(on_press=on_key_press) as listener: listener.join()
内容的提问来源于stack exchange,提问作者Varsima
相关产品推荐
相关产品推荐

