PyQt5从其他程序获取选中的文本内容

问题描述 投票:0回答:1

我正在查看 PyQt4 中的这个示例。

获取所选文本

from PyQt4.QtCore import QObject, pyqtSlot, SIGNAL, SLOT
from PyQt4.QtGui import QApplication, QMessageBox
import sys


class MyClipboard(QObject):

    @pyqtSlot()
    def changedSlot(self):
        if(QApplication.clipboard().mimeData().hasText()):
            QMessageBox.information(None, "Text has been copied somewhere!",
                                    QApplication.clipboard().text())


def main():
    app = QApplication(sys.argv)
    listener = MyClipboard()

    app.setQuitOnLastWindowClosed(False)
    QObject.connect(QApplication.clipboard(), SIGNAL(
        "dataChanged()"), listener, SLOT("changedSlot()"))

    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

然而,PyQt5 中的信号和插槽发生了变化,信号和插槽被贬值。 任何改造 PyQt4 SIGNAL 和 SLOT 线的建议。

QObject.connect(QApplication.clipboard(), SIGNAL(
    "dataChanged()"), listener, SLOT("changedSlot()"))

到 PyQt5

pyqt5 pyqt4 signals-slots
1个回答
1
投票

等效代码是:

   QApplication.clipboard().dataChanged.connect(listener.changedSlot)

这是新式信号和槽语法,它完全取代了旧式语法。旧式语法容易出错、冗长,而且不是Pythonic - 特别是,如果信号签名错误,它不会引发错误。 PyQt4 仍然支持这两种语法,但 PyQt5 根本不支持(并且永远不会)。

© www.soinside.com 2019 - 2024. All rights reserved.