You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.10.4在Ubuntu22.04下如何实现浏览器内容复制到剪贴板

问题根因

代码无法正常运行是三个问题叠加导致,和Ubuntu 22.04的适配直接相关:

  • 库名拼写错误:代码中导入的paperclip是错误包名,Python生态中用于操作剪贴板的标准库是pyperclip,拼写错误直接导致方法调用异常,和你注释中记录的Pyperclip do not have the method copy()报错直接对应。
  • API逻辑使用错误:pyperclip.copy()的作用是将传入的字符串写入系统剪贴板,不会主动读取页面上选中的文本;读取剪贴板内容需要用pyperclip.paste()方法。且你三击选中文本后,没有触发系统复制动作,选中的文本根本没有进入剪贴板。
  • 系统依赖缺失:pyperclip在Linux系统下没有内置剪贴板对接能力,依赖系统层面的剪贴板工具完成读写,Ubuntu 22.04默认没有预装对应依赖,直接调用会出现无返回、报错等问题。
修复步骤
  1. 安装系统层剪贴板依赖,终端执行以下命令:
sudo apt update && sudo apt install xclip -y
# 如果你使用Wayland显示协议,额外安装wl-clipboard适配
sudo apt install wl-clipboard -y
  1. 修正Python包,卸载错装的包,安装正确的剪贴板库:
pip uninstall paperclip -y
pip install pyperclip
  1. 修正代码逻辑,选中文本后先触发复制快捷键,等待剪贴板同步后再读取内容,修正后的核心代码如下:
from time import sleep
import cv2 as cv
import pyautogui as pt
# 修正导入名
import pyperclip as pc
from tkinter import ttk

# 其余代码保持不变

def nav_message(self):
    try:
        clipPicCenter = pt.locateCenterOnScreen('./clip_pic.png', confidence=0.7)
        pt.moveTo(clipPicCenter[0]+48, clipPicCenter[1]-60, duration=self.speed) 

        pt.click(clicks=3)
        sleep(.9)
        # 新增:模拟Ctrl+C快捷键将选中内容写入剪贴板
        pt.hotkey('ctrl', 'c')
        # 预留剪贴板同步时间,Linux下不可省略,否则容易读到空值
        sleep(0.2)
        # 用paste方法读取剪贴板内容,不是copy
        self.message = pc.paste()
        print(self.message)

    except Exception as e:
        print ('Exception (nav_green_dot): ', e)
注意事项
  • Ubuntu 22.04默认支持X11和Wayland两种显示协议,如果安装依赖后仍然读不到剪贴板内容,可以在登录界面点击右下角齿轮图标切换到X11会话后重试。
  • 复制后的等待时间不要随意缩短,Linux桌面环境下剪贴板同步延迟高于Windows/macOS,不等待直接读取大概率拿到空值或者上一次留存的剪贴板内容。

内容的提问来源于stack exchange,提问作者IgorAlves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:15:41