如何在pyQT中获取从其他位置拖动的文本?

时间:2016-05-17 16:10:40

标签: python pyqt

我想将一些文字拖到pyQT的TextEdit表单MS Word或网页或其他有一些单词的地方。

我的密码是:

    self.inputBox = QtWidgets.QTextEdit(xxxx)
    self.inputBox.dragEnterEvent = self.onDragEnter

    def onDragEnter(self, event):
        content = self.inputBox.toPlainText()
        print(content)
        print(123)

当我将一些单词拖到textEdit时,控制台将打印123,这意味着已调用onDragEnter方法。但是,我拖动的文本永远不会在控制台中打印出来。

那么,我的代码中有什么问题?以及如何更改代码以便它可以做我想要的?

1 个答案:

答案 0 :(得分:0)

通常,您可以将要添加拖放支持的窗口小部件子类化,并重新实现dragEnterEventdragMoveEventdragLeaveEventdropEvent方法。许多小部件已经支持拖放,包括QTextEdit。只要acceptDrops()为True(默认为默认值),就像你说的那样拖拽应该已经有效了。但如果你想手动完成

def dragEnterEvent(self, event):
    if event.mimeData().hasText():
        event.accept()
    else:
        event.ignore()

def dropEvent(self, event):
    if event.mimeData().hasText():
        text = event.mimeData().text()
        self.insertPlainText(text)