Буфер обмена Pyperclip застрял с одной строкой в ​​памяти и не обновляется - PullRequest
0 голосов
/ 05 октября 2018

Я работаю с программой, которая не может обрабатывать пробелы, поэтому я создал скрипт на python для решения проблемы из того, что нашел в Интернете, но есть проблема.Когда я нажимаю Ctrl + c, первая строка сохраняется, обрабатывается и возвращается в буфер обмена и красиво вставляется.Но когда я копирую другую строку, старый стинг вставляется.По какой-то причине буфер обмена не обновляется новой строкой.Код:

    from pynput import keyboard
    import pyperclip
    import time


   # The key combinations to check
    COMBINATIONS = [
        {keyboard.Key.ctrl_l, keyboard.KeyCode(char='c')},
        {keyboard.Key.ctrl_r, keyboard.KeyCode(char='c')}
    ]
    # The currently active modifiers
    current = set()


    def on_press(key):
        if any([key in comb for comb in COMBINATIONS]):
            current.add(key)
            if any(all(k in current for k in comb) for comb in COMBINATIONS):
                main_function()


    def on_release(key):
        try:
            current.remove(key)
        except KeyError:
            pass

    def main_function(): 
        copy = pyperclip.paste()
        text = copy.strip()
        pyperclip.copy(text)
        print("Ctrl + c pressed")#To register if it is pressed


    with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
        listener.join()

РЕДАКТИРОВАТЬ : Я понял, что хочу сделать две операции одновременно.Скопируйте и отформатируйте строку.Поэтому я добавил задержку в функцию, и она удалила мою проблему.

def main_function():
    time.sleep(0.1)
    copy = pyperclip.paste()
    text = copy.strip()
    pyperclip.copy(text)
    print("Ctrl + c pressed")#To register if it is pressed
...