2012-02-02 2 views
1

Я изучаю Python прямо сейчас, и я хочу написать сценарий, который поможет мне с работой. Идея такова: while True: прочитайте строку из буфера обмена, измените ее, затем верните в буфер обмена, затем sleep. Поэтому я могу вставлять измененные данные в любую точку.Сбои с буфером обмена в Python

Теперь я застрял в использовании модуля win32clipboard. Я использую этот код:

import win32clipboard 

def openClipboard(): 
    win32clipboard.OpenClipboard() 

def closeClipboard(): 
    try: 
     win32clipboard.CloseClipboard() 
    except Exception as e: 
     print(e) 

def getClipboardData(): 
    if win32clipboard.IsClipboardFormatAvailable(win32clipboard.CF_TEXT): 
     return win32clipboard.GetClipboardData() 
    else: 
     return None 

def setClipboardData(data): 
    win32clipboard.EmptyClipboard() 
    win32clipboard.SetClipboardData(win32clipboard.CF_TEXT, data) 

#assume that I copied '000' 

openClipboard() 
data = getClipboardData() 
print(data) //output: 000, so it's ok 
closeClipboard() 

openClipboard() 
win32clipboard.EmptyClipboard() 
setClipboardData(data + '123') 
closeClipboard() 

openClipboard() 
data = getClipboardData() 
print(data) //output: 0 0 0 1 2 3, but wtf? o_0 
closeClipboard() 

Я не могу понять, почему на втором выходе есть пробелы?

+1

Я не уверен, но у вас, вероятно, есть проблемы с форматированием ввода. Попробуйте ввести настройки SetClipboardText и параметры ввода whit. –

ответ

4

ralu, спасибо. У меня есть это, в то же время у меня есть ваш ответ. Я должен был использовать win32clipboard.SetClipboardText(data) вместо win32clipboard.SetClipboardData(win32clipboard.CF_TEXT, data).

+1

Если необходимо прочитать или написать Юникод, то используйте 'win32clipboard.SetClipboardData (win32clipboard.CF_UNICODETEXT, data)' и 'win32clipboard.GetClipboardData (win32clipboard.CF_UNICODETEXT)'. – franza

+1

Мне просто интересно: почему win32clipboard.SetClipboardData (win32clipboard.CF_TEXT, data) не работает? Какова логика? – JinSnow

Смежные вопросы