将突出显示的文本复制到剪贴板,然后使用剪贴板将其附加到列表中

问题描述 投票:4回答:4

我正在尝试使用pyautogui模块为Python 3(Windows 10)在浏览器或文字处理器中自动执行某些操作。

浏览器中有一个突出显示的文本。

text

以下脚本应打印突出显示的文本

import pyautogui as pya

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

list = []
# a function copy_clipboard() should be called here
var = copy_clipboard()
list.append(var) 
print(list)

输出应该是:

[text]

那么copy_clipboard()函数应该怎么样?谢谢您的帮助。

python python-3.x pyautogui
4个回答
6
投票

键盘组合Ctrl + C处理复制大多数应用程序中突出显示的内容,并且应该可以正常工作。这部分很容易与pyautogui。为了以编程方式获取剪贴板内容,正如其他人所提到的,您可以使用ctypespywin32或其他库来实现它。在这里,我选择了pyperclip

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

def copy_clipboard():
    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)

1
投票

嗯......这是:

from tkinter import Tk

def copy_clipboard():
    clipboard = Tk().clipboard_get()
    return clipboard

Tk().clipboard_get()返回剪贴板中的当前文本。

你需要先使用pyautogui.hotkey('ctrl', 'c')


1
投票

发布的条带有效,但在复制前一个值时不考虑复制空值。我已经包含了一个清除剪贴板的附加行,因此空值副本保持空值:

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)

0
投票

您可以导入pyperclip并使用pyperclip.copy('my text I want copied')然后使用pyperclip.paste()将文本粘贴到您想要的任何位置。你可以找到一个参考here

© www.soinside.com 2019 - 2024. All rights reserved.