2012-02-02 46 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

我不确定,但你可能有问题格式化输入。 尝试insted whit SetClipboardText并播放白色输入格式选项。 – 2012-02-02 21:11:16

回答

4

ralu,谢谢。我已经在同一时间得到了你的答案。我应该使用win32clipboard.SetClipboardText(data)而不是win32clipboard.SetClipboardData(win32clipboard.CF_TEXT, data)

+1

如果需要读取或写入Unicode,则使用'win32clipboard.SetClipboardData(win32clipboard.CF_UNICODETEXT,data)'和'win32clipboard.GetClipboardData(win32clipboard.CF_UNICODETEXT)'。 – franza 2012-02-03 17:36:00

+1

我只是好奇:为什么win32clipboard.SetClipboardData(win32clipboard.CF_TEXT,数据)不起作用?背后的逻辑是什么? – JinSnow 2017-01-16 21:17:17