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
将键 EnableLUA
从 1
更改为 0
。然后重新启动计算机。请注意,如果某个程序试图更改您系统上可能存在安全问题的某些内容,这将导致您的系统不显示任何对话框。
我有这个使用 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
将键 EnableLUA
从 1
更改为 0
。然后重新启动计算机。请注意,如果某个程序试图更改您系统上可能存在安全问题的某些内容,这将导致您的系统不显示任何对话框。