【问题标题】:Copying highlighted text to clipboard in Python在 Python 中将突出显示的文本复制到剪贴板
【发布时间】:2019-09-07 06:51:57
【问题描述】:

我是一名 Python 新手,试图弄清楚如何让 Python 复制我在调用程序时突出显示的任何文本。

我查看了此线程中发布的解决方案:Copy highlighted text to clipboard, then use the clipboard to append it to a list

理论上一切都是有道理的,但问题是当我运行程序时,'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)

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

【问题讨论】:

  • 您的意思是,如果您打开一个页面,您希望复制该页面中的所有文本?或者你想选择一个完整的句子?
  • 我想我假设我已经选择了文本并且它位于突出显示的屏幕上。我希望 Python 然后将该文本复制到剪贴板中。
  • 我遇到的问题是运行程序的行为似乎取消了突出显示的文本,因此我想要的文本没有被复制。

标签: python python-3.x pyautogui pyperclip


【解决方案1】:

也许你可以用键盘模块来监控热键,然后你可以打开CMD控制台,输入命令python yourcode.py,或者把文件名改成yourcode.pyw可以在没有windows的后台进程中运行,双击代码文件会很有用的。

键盘项目: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()

【讨论】:

    【解决方案2】:

    您需要等待一段时间才能切换到您的实际窗口。您已经导入了time。在点击过程前使用.sleep

    time.sleep(3)
    

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

    ...
    def copy_clipboard():
        ...
    
    time.sleep(3)
    pya.doubleClick(pya.position())
    ...
    

    【讨论】:

      猜你喜欢
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 2013-03-21
      相关资源
      最近更新 更多