【发布时间】:2016-08-28 12:43:20
【问题描述】:
QClipboard::dataChanged() 的 slot detectClipboardUrl 有时会被调用两次,当我在这段代码中在 Google Chrome 的地址栏中复制 url 时,在 Win7 32 位上使用 PyQt5.7、Python3.5 进行了测试,也在 Linux Mint 18 上进行了测试, 虽然我只需要调用一次插槽,但这是一个错误吗?有什么解决办法吗?
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MainWindow(QTableView):
def __init__(self, parent=None):
super().__init__(parent)
self.clipboard = QApplication.clipboard()
self.clipboard.dataChanged.connect(self.detectClipboardUrl)
@pyqtSlot()
def detectClipboardUrl(self):
print(self.clipboard.text())
if __name__ == "__main__":
app = QApplication(sys.argv)
ui = MainWindow()
ui.show()
sys.exit(app.exec_())
【问题讨论】:
-
真的只有谷歌浏览器地址栏受到影响吗?
-
@ekhumoro 从文本编辑中复制文本时,没有此效果
-
所以问题出在 Chrome,而不是 Qt。
标签: python pyqt pyqt5 qt-signals qclipboard