Как обрезать возврат каретки при вставке в Python - PullRequest
0 голосов
/ 29 марта 2019

Я создал функцию, которая будет копировать в системный буфер обмена.Тем не менее, когда я вставляю значение из буфера обмена, оно автоматически выполняет возврат каретки.Это резко влияет на расчеты в моей программе.

Примечание: нельзя использовать Pyperclip или любую другую установку.Я могу использовать только то, что включено в Python IDLE 3.8 для этого

Я пытался использовать метод strip () с переменной clipboard_answer.Он по-прежнему возвращается к следующей строке

def copy(solution_answer): 
    clipboard_answer = str(solution_answer)
    command = 'echo ' + clipboard_answer.strip() + '| clip' # Creates command variable, then passes it to the os.system function as an argument. CMD opens and applys echo (number calculated) | clip and runs the clipboard function
    os.system(command)
    print("\n\n\n\n",solution_answer, "has been copied to your clipboard") # Used only for confirmation to ensure copy function runs

Притворись "|"значок - курсор

У меня есть решение, которое было скопировано в мой буфер обмена, т.е. 25

Когда я нажимаю CTRL + V в программе, я ожидаю, что это сделает

25|

Но на самом деле курсор выглядит так

25

|

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Не используйте os.system.Используйте subprocess, и вы можете передать строку непосредственно на стандартный ввод clip, не вызывая конвейер оболочки.

from subprocess import Popen, PIPE

Popen(["clip"], stdin=PIPE).communicate(bytes(solution_answer))
0 голосов
/ 29 марта 2019
import pyperclip

pyperclip.copy(solution)

Это должно сработать.

РЕДАКТИРОВАТЬ: снова решение tkinter, так как Pyperclip не вариант для OP.

from tkinter import Tk

r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append("hello world")
r.update()
...