问题现象:
通过打断点,一步步调试可以正常复制和粘贴剪贴板数据。但是直接运行会报错pywintypes.error: (1418, ‘GetClipboardData‘,线程没有打开的剪贴板)
问题原因:
原因是直接运行的话,没办法控制main线程的运行顺序,可能出现setText()还未关闭剪贴板,getText()就打开了剪贴板的情况。
但是打了断点之后,就可以按照代码中所写的那样的顺序来执行了。
解决方法:
在调用Clipboard.setText(content)之后,一定要加time.sleep(3)
尼玛,这个坑卡了我好几天。。。
源码如下:#encoding = utf-8import win32clipboard as wimport 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)
python操作剪贴板错误提示:pywintypes.error: (1418, 'GetClipboardData',线程没有打开的剪贴板)
原文地址:https://www.cnblogs.com/xiaohuhu/p/9131317.html
时间: 2024-12-18 08:13:36