PySide2拖放功能不起作用

时间:2019-01-29 13:23:35

标签: python qt pyqt pyside2

我有一个使用PySide2的简单脚本,尽管我使用PyQt5尝试了相同的脚本,但结果相同。我试图将文件拖放到我的窗口上并获取它们的文件路径:

import sys
from PySide2.QtWidgets import QApplication, QMainWindow


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setAcceptDrops(True)

    def dragEnterEvent(self, e):
        if e.mimeData().hasUrls():
            e.acceptProposedAction()

    def dropEvent(self, e):
        for url in e.mimeData().urls():
            file_name = url.toLocalFile()
            print("Dropped file: " + file_name)


app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()

在我的系统上,这不允许拖放操作到该窗口。从未调用过dragEnterEvent。我想念什么吗?

1 个答案:

答案 0 :(得分:1)

事实证明,它发生在某些装有Windows 10的系统上。解决方案是从注册表中禁用EnableLUA

HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVersion > Policies > System

将密钥EnableLUA1更改为0。然后重新启动计算机。请注意,如果程序尝试更改系统上的某些内容(可能是安全问题),这将导致系统不显示任何对话框。