PyQt5 自带的写入剪切板方法在 clipboard.dataChanged.connect() 里不生效,主要是为了避免死循环。 不过利用其它的写入剪切板方法放在里面就不会有影响了,比如 pyperclip。
代码语言:javascript复制import pyperclip
# 写入剪切板
def setCopy(s):
pyperclip.copy(s)
下面是 pyqt5 监听剪切板的演示代码。
代码语言:javascript复制from PyQt5.QtWidgets import *
app = QApplication([])
clipboard = app.clipboard()
# 当剪切板变动会执行该方法
def change_deal():
data = clipboard.mimeData()
# 获取剪切板内容
text = data.text()
# 当剪切板内容为"改变"时,我就写入剪切板
if(text == "改变"):
setCopy("不改变")
else:
print(text)
# 监听剪切板变动
clipboard.dataChanged.connect(change_deal)
app.exec_()
效果图如下: 我找到改变两个字复制一下,就会触发两次,一次改变文本,另一次把剪切板内容的改变两个字变成不改变。