python操作剪贴板错误提示:pywintypes.error: (1418, 'GetClipboardData',线程没有打开的剪贴板)
问题现象:
通过打断点,一步步调试可以正常复制和粘贴剪贴板数据。但是直接运行会报错pywintypes.error: (1418, 'GetClipboardData',线程没有打开的剪贴板)
问题原因:
原因是直接运行的话,没办法控制main线程的运行顺序,可能出现setText()还未关闭剪贴板,getText()就打开了剪贴板的情况。
但是打了断点之后,就可以按照代码中所写的那样的顺序来执行了。
解决方法:
在调用Clipboard.setText(content)之后,一定要加time.sleep(3)
尼玛,这个坑卡了我好几天。。。
源码如下:
#encoding = utf-8
import win32clipboard as w
import win32con,time
class Clipboard(object):
@staticmethod
def getText():
w.OpenClipboard()
d = w.GetClipboardData(win32con.CF_UNICODETEXT)
w.CloseClipboard()
return d
@staticmethod
def setText(aString):
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, aString)
w.CloseClipboard()
if __name__ == "__main__":
content = "xiaohuhu"
Clipboard.setText(content)
time.sleep(3) #一定一定要加暂停,要不然会提示pywintypes.error: (1418, 'GetClipboardData',线程没有打开的剪贴板)
a = Clipboard.getText()
print(a)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署