PySide2 拖放功能不起作用

PySide2 drag & drop functionality does not work

我有这个使用 PySide2 的简单脚本,尽管我用 PyQt5 尝试了相同的脚本并得到了相同的结果。我正在尝试将文件拖放到我的 window 上并获取它们的文件路径:

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_()

在我的系统上,这不允许对此 window 进行拖放操作。 dragEnterEvent 从未被调用。我错过了什么吗?

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

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

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