亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用Python將字符串復制到Windows上的剪貼板上?

如何使用Python將字符串復制到Windows上的剪貼板上?

躍然一笑 2019-06-26 16:13:44
如何使用Python將字符串復制到Windows上的剪貼板上?我正在嘗試制作一個基本的Windows應用程序,它從用戶輸入中構建一個字符串,然后將其添加到剪貼板中。如何使用Python將字符串復制到剪貼板?
查看完整描述

3 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

實際上,pywin32ctypes對這個簡單的任務來說似乎太過分了。Tkinter是一個跨平臺的GUI框架,默認情況下它隨Python一起提供,并且有剪貼板訪問方法以及其他很酷的東西。

如果您只需要將一些文本放到系統剪貼板上,就可以這樣做:

from Tkinter import Tkr = Tk()r.withdraw()r.clipboard_clear()r.clipboard_append('i can has clipboardz?')r.update() # now it stays on the clipboard after the window is closedr.destroy()

僅此而已,不需要和特定于平臺的第三方庫混在一起。

如果使用Python 3,請替換TKinter帶著tkinter.


查看完整回答
反對 回復 2019-06-26
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

我沒有解決辦法,只是一個解決辦法。

WindowsVista有一個內置命令,名為clip這將從命令行獲取命令的輸出,并將其放入剪貼板。例如,ipconfig | clip.

所以我用os模塊,它接受一個字符串并使用內置的Windows解決方案將其添加到剪貼板中。

import osdef addToClipBoard(text):
    command = 'echo ' + text.strip() + '| clip'
    os.system(command)# ExampleaddToClipBoard('penny lane')# Penny Lane is now in your ears, eyes, and clipboard.

然而,正如前面在評論中所指出的,這種方法的一個缺點是echo命令自動向文本末尾添加換行符。要避免這種情況,可以使用命令的修改版本:

def addToClipBoard(text):
    command = 'echo | set /p nul=' + text.strip() + '| clip'
    os.system(command)

如果您正在使用WindowsXP,它將按照以下步驟工作從WindowsXPPro的命令提示符直接復制和粘貼到剪貼板.


查看完整回答
反對 回復 2019-06-26
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

您還可以使用ctype來訪問WindowsAPI,并避免使用龐大的pywin 32包。這就是我所用的(請原諒這種糟糕的風格,但有這樣的想法):

import ctypes# Get required functions, strcpy..strcpy = ctypes.cdll.msvcrt.strcpy
ocb = ctypes.windll.user32.OpenClipboard    # Basic clipboard functionsecb = ctypes.windll.user32.EmptyClipboardgcd = ctypes.windll.user32.GetClipboardDatascd = ctypes.windll.user32.SetClipboardDataccb = ctypes.windll.user32.CloseClipboardga = ctypes.windll.kernel32.GlobalAlloc    # Global memory allocationgl = ctypes.windll.kernel32.GlobalLock     # Global memory Lockinggul = ctypes.windll.kernel32.GlobalUnlockGMEM_DDESHARE = 0x2000def Get():
  ocb(None) # Open Clip, Default task

  pcontents = gcd(1) # 1 means CF_TEXT.. too lazy to get the token thingy...

  data = ctypes.c_char_p(pcontents).value  #gul(pcontents) ?
  ccb()

  return datadef Paste(data):
  ocb(None) # Open Clip, Default task

  ecb()

  hCd = ga(GMEM_DDESHARE, len(bytes(data,"ascii")) + 1)

  pchData = gl(hCd)

  strcpy(ctypes.c_char_p(pchData), bytes(data, "ascii"))

  gul(hCd)

  scd(1, hCd)

  ccb()


查看完整回答
反對 回復 2019-06-26
  • 3 回答
  • 0 關注
  • 1690 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號