求助:Linux Mint 19.3环境下QT GUI无法获取选中文本
解决Linux Mint 19.3下无法提取QT窗口选中文本的问题
嘿,我来帮你搞定这个头疼的问题!你用xsel读不到QT程序里的选中内容,其实核心原因是X11系统里的两个剪贴板缓冲区在搞鬼——QT程序默认会把选中的文本放到CLIPBOARD(剪贴板),而xsel不加参数的话默认读取的是PRIMARY(主选择),这俩可不是一回事儿!
给你几个实用的解决方案:
1. 直接读取CLIPBOARD缓冲区
修改你的Python代码,指定读取剪贴板内容:
import os # 加上-b参数读取CLIPBOARD缓冲区 selected_text = os.popen('xsel -b').read() print(selected_text)
先试试手动复制QT窗口里的文本(Ctrl+C),再运行这段代码,应该就能拿到内容了。
2. 验证xsel是否正常工作
先在终端里直接执行命令测试:xsel -b
如果能输出你刚才复制的QT文本,说明代码修改后肯定没问题。要是提示命令不存在,先安装xsel:sudo apt install xsel
3. 读取未复制的选中文本(鼠标选中但没Ctrl+C)
有些QT程序不会自动把选中内容同步到PRIMARY缓冲区,这时候可以试试用xclip工具,它的兼容性更好:
先安装xclip:sudo apt install xclip
然后修改代码:
import os # 读取剪贴板内容 selected_text = os.popen('xclip -selection clipboard -o').read() # 或者如果要读取主选择(比如终端里鼠标选中的文本)用这个: # selected_text = os.popen('xclip -selection primary -o').read() print(selected_text)
如果还是不行,检查下QT程序的设置,有些软件里有“选中即复制”的选项,打开它就能让选中内容同步到PRIMARY缓冲区,这样直接用xsel不加参数也能读到了。
内容的提问来源于stack exchange,提问作者Felipe Mello Fonseca
相关产品推荐
相关产品推荐

