PyQt拖放事件为空

时间:2018-03-05 18:43:21

标签: python drag-and-drop pyqt event-handling

我正在试图找出dnd如何与(py)qt一起使用。我尝试了几个示例应用程序......我想知道:如何查看拖放事件中实际存在哪些数据?我尝试打印事件,事件的 dict ,mimeData()。text()..但是没有我在那里拖动的东西,似乎没有任何数据。例如,如果我从/ usr / share / applications拖动'.desktop'文件,那么拖动事件中是否应该有信息?

看到这个例子。应用程序:

#!/usr/bin/python
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
from PyQt4.QtCore import Qt

class DragFromWidget(QtGui.QDockWidget):

    def __init__(self, parent=None):
        super(DragFromWidget, self).__init__(parent=parent)
        self.layout().addWidget(QtGui.QLabel("Label!"))

class DragToWidget(QtGui.QDockWidget):

    def __init__(self, parent=None):
        super(DragToWidget, self).__init__(parent=parent)
        self.setAcceptDrops(True)

    def dragEnterEvent(self, event):
        #HOW?
        print event
        print event.__dict__
        print event.mimeData()
        print event.mimeData().__dict__
        print event.mimeData().text()
        event.accept()

    def dropEvent(self, event):
        #HOW?
        print event
        print event.__dict__
        print event.mimeData()
        print event.mimeData().__dict__
        print event.mimeData().text()

class SandboxApp(QtGui.QApplication):

    def __init__(self, *args, **kwargs):
        super(SandboxApp, self).__init__(*args)
        self.mainwindow = MainWindow()
        self.mainwindow.show()


class MainWindow(QtGui.QMainWindow):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent=parent)
        self.setDockOptions(QtGui.QMainWindow.AllowNestedDocks|QtGui.QMainWindow.AnimatedDocks)
        self.addDockWidget(Qt.LeftDockWidgetArea, DragFromWidget())
        self.addDockWidget(Qt.RightDockWidgetArea, DragToWidget())


def main():
    app = SandboxApp(sys.argv)
    sys.exit(app.exec_())



if __name__ == "__main__":
    main()

0 个答案:

没有答案