繁体   English   中英

在Python中将突出显示的文本复制到剪贴板

[英]Copying highlighted text to clipboard in Python

我是一个Python新手试图找出如何让Python复制我调用程序时突出显示的任何文本。

我已经看过这个帖子中发布的解决方案: 将突出显示的文本复制到剪贴板,然后使用剪贴板将其附加到列表中

那里的一切都在理论上有意义,但问题是,当我运行程序时,似乎'pya.doubleClick(pya.position())'命令摆脱了我的亮点! 如果我将光标悬停在文本上,那么程序会成功突出显示给定的单词 - 但我需要能够复制整个短语!

我想要实现的是能够突出显示屏幕上的任何文本(包括整个短语而不仅仅是特定的单词),然后运行程序,结果突出显示的文本通过程序提供。

我曾预料到这将涉及'ctrl'+'c'功能的某种自动化,同时文本突出显示......但我无法弄清楚实际上让它工作。

我在Windows 10上使用Python 3.7.4。

这是我在上面链接的线程中作为解决方案呈现的代码:

import pyautogui as pya
import pyperclip  # handy cross-platform clipboard text handler
import time

def copy_clipboard():
    pyperclip.copy("") # <- This prevents last copy replacing current copy of null.
    pya.hotkey('ctrl', 'c')
    time.sleep(.01)  # ctrl-c is usually very fast but your program may execute faster
    return pyperclip.paste()

# double clicks on a position of the cursor
pya.doubleClick(pya.position())

list = []
var = copy_clipboard()
list.append(var) 
print(list)

也许我真正的问题是我不知道如何让程序运行而不删除当时突出显示的任何文本的突出显示。 目前,为了调用程序,我正在使用非常笨重的方法来创建程序的快捷方式,然后在“属性”选项卡中为该快捷方式指定该快捷方式的热键。

也许您可以使用键盘模块来监控热键,然后您可以打开CMD控制台,输入命令python yourcode.py ,或者将文件名更改为yourcode.pyw可以在没有窗口的后台进程中运行的yourcode.pyw ,双击它将代码文件很有用。

键盘项目: https//github.com/boppreh/keyboard

注意不要将list用作变量名,因为它是Python语言中的关键字。

以下代码在我的计算机上有效(win10,python3.7):

import pyautogui as pya
import pyperclip  # handy cross-platform clipboard text handler
import time
import keyboard

lst = []


def copy_clipboard():
    pyperclip.copy("")  # <- This prevents last copy replacing current copy of null.
    pya.hotkey('ctrl', 'c')
    time.sleep(.1)  # ctrl-c is usually very fast but your program may execute faster
    return pyperclip.paste()


def double_click_copy():
    # double clicks on a position of the cursor
    pya.doubleClick(pya.position())

    var = copy_clipboard()
    lst.append(var)
    print(lst)


keyboard.add_hotkey('ctrl+f9', double_click_copy) 
keyboard.wait()

您需要等待切换到实际窗口。 您已导入time 在点击过程之前使用.sleep

time.sleep(3)

所以,你的代码将是这样的:

...
def copy_clipboard():
    ...

time.sleep(3)
pya.doubleClick(pya.position())
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM