将突出显示的文本复制到剪贴板,然后使用剪贴板将其附加到列表
Copy highlighted text to clipboard, then use the clipboard to append it to a list
我正在尝试使用 Python 3 (Windows 10) 的 pyautogui 模块在浏览器或文字处理器中自动执行某些操作。
浏览器中有一个突出显示的文本。
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()
应该是什么样子的?
感谢您的帮助。
使用 tkinter 的示例:
from tkinter import Tk
import pyautogui as pya
def copy_clipboard():
root = Tk() # Initialize tkinter
root.withdraw() # hide the tkinter window
pya.hotkey("ctrl", "c") # copy the text (simulating key strokes)
clipboard = root.clipboard_get() # get the text from the clipboard
return clipboard
copy_text = copy_clipboard()
print(copy_text)
Tk().clipboard_get() returns剪贴板中的当前文本。
您可以导入 pyperclip
并使用 pyperclip.copy('my text I want copied')
,然后使用 pyperclip.paste()
将文本粘贴到您想要的位置。可以找参考 here.
键盘组合 Ctrl+C 可以复制大多数应用程序中突出显示的内容,应该适合您。 pyautogui
这部分很容易。要以编程方式获取剪贴板内容,正如其他人所提到的,您可以使用 ctypes
、pywin32
或其他库来实现它。这里我选择了 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)
soundstrip 发布的内容有效,但没有考虑在复制了先前的值时复制空值。我添加了一个额外的行来清除剪贴板,因此空值副本保持空值:
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)
获取highlighted/selected文本的另一个选项:
import subprocess
import shlex
selected_text = subprocess.check_output((shlex.split('xclip -out -selection')))
我正在尝试使用 Python 3 (Windows 10) 的 pyautogui 模块在浏览器或文字处理器中自动执行某些操作。
浏览器中有一个突出显示的文本。
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()
应该是什么样子的?
感谢您的帮助。
使用 tkinter 的示例:
from tkinter import Tk
import pyautogui as pya
def copy_clipboard():
root = Tk() # Initialize tkinter
root.withdraw() # hide the tkinter window
pya.hotkey("ctrl", "c") # copy the text (simulating key strokes)
clipboard = root.clipboard_get() # get the text from the clipboard
return clipboard
copy_text = copy_clipboard()
print(copy_text)
Tk().clipboard_get() returns剪贴板中的当前文本。
您可以导入 pyperclip
并使用 pyperclip.copy('my text I want copied')
,然后使用 pyperclip.paste()
将文本粘贴到您想要的位置。可以找参考 here.
键盘组合 Ctrl+C 可以复制大多数应用程序中突出显示的内容,应该适合您。 pyautogui
这部分很容易。要以编程方式获取剪贴板内容,正如其他人所提到的,您可以使用 ctypes
、pywin32
或其他库来实现它。这里我选择了 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)
soundstrip 发布的内容有效,但没有考虑在复制了先前的值时复制空值。我添加了一个额外的行来清除剪贴板,因此空值副本保持空值:
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)
获取highlighted/selected文本的另一个选项:
import subprocess
import shlex
selected_text = subprocess.check_output((shlex.split('xclip -out -selection')))