Как вставить скопированный текст с клавиатуры в python

Если я выполняю этот код, он работает нормально. Но если я скопирую что-то с помощью клавиатуры (Ctrl+C), то как я могу вставить текст, находящийся в буфере обмена, в любое поле ввода или текстовое поле в python?

import pyperclip
pyperclip.copy('The text to be copied to the clipboard.')
spam = pyperclip.paste()

person divyjot singh    schedule 18.10.2017    source источник


Ответы (3)


Вы захотите передать pyperclip.paste() то же самое место, где вы разместили бы строку для своей записи или текстовых вставок виджета.

Взгляните на этот пример кода.

Есть кнопка для копирования содержимого поля ввода и кнопка для вставки в поле ввода.

import tkinter as tk
from tkinter import ttk
import pyperclip

root = tk.Tk()

some_entry = tk.Entry(root)
some_entry.pack()

def update_btn():
    global some_entry
    pyperclip.copy(some_entry.get())

def update_btn_2():
    global some_entry
    # for the insert method the 2nd argument is always the string to be
    # inserted to the Entry field.
    some_entry.insert(tk.END, pyperclip.paste())

btn = ttk.Button(root, text="Copy to clipboard", command = update_btn)
btn.pack()

btn2 = ttk.Button(root, text="Paste current clipboard", command = update_btn_2)
btn2.pack()


root.mainloop()

В качестве альтернативы вы можете просто нажать Ctrl+V :D

person Mike - SMT    schedule 18.10.2017

Вам нужно удалить строку:

pyperclip.copy('The text to be copied to the clipboard.')

Потому что он переопределяет то, что вы копируете с помощью клавиатуры.


Например, я скопировал заголовок вашего вопроса, и вот как я вставил его в оболочку Python:

>>> import pyperclip 
>>> pyperclip.paste() 
'How do I paste the copied text from keyboard in python\n\n'
>>> 
person Mohamed Ali JAMAOUI    schedule 18.10.2017

Если вы уже используете tkinter в своем коде, и все, что вам нужно, это содержимое в буфере обмена. Тогда tkinter имеет встроенный метод для этого.

import tkinter as tk
root = tk.Tk()
spam = root.clipboard_get()

Чтобы добавить скопированный текст в запись/текстовое поле tkinter, вы можете использовать переменную tkinter:

var = tk.StringVar()
var.set(spam)

И свяжите эту переменную с виджетом Entry.

box = tk.Entry(root, textvariable = var)
person RottenCandy    schedule 19.10.2017