PyQt의 응용 프로그램에서 작업 중입니다. HTML 페이지로로드 된 QWebView로 UI를 만들었습니다.자바 스크립트로 Qt (PyQt) 응용 프로그램에서 데스크탑에서 QWebView로 파일을 끌어다 놓는 방법을 잡는 방법
이 HTML 페이지에는 특정 DIV에서 파일이 삭제되었는지 감지하는 자바 스크립트 코드가 들어 있습니다.
$(document).ready(function() {
jQuery.event.props.push('dataTransfer');
$('.input').bind('drop', function(e) {
var files = e.dataTransfer.files;
alert(files[0].name);
});
});
Chrome에서 HTML 코드를로드하면 정상적으로 작동합니다.
내 응용 프로그램을 실행하고 D & D는 JavaScript 코드가 실행되지 않는 QWebView의 파일입니다.
파이썬으로 D & D 이벤트를 잡을 수 있도록 QWebView를 확장하고 이벤트를 추가했습니다.
class BrowserWindow(QtWebKit.QWebView):
def __init__(self, parent):
super(BrowserWindow, self).__init__(parent)
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
if event.mimeData().hasUrls:
event.accept()
else:
event.ignore()
def dragMoveEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
urls = event.mimeData().urls()
print str(urls[0].toLocalFile())
else:
event.ignore()
QWebView에서 자바 스크립트로 이러한 이벤트를 직접 잡을 수있는 옵션이 있습니까?
나는 이벤트 잡기를위한 파이썬 코드를 계속해서 기쁘게 생각 하겠지만 지금 당장 내 머리 속에있는 유일한 해결책은 파이썬으로 D & D 이벤트를 잡은 다음 마우스 커서의 X 및 Y 위치를 얻는 것이다. 그런 다음 X, Y 및 파일 이름을 javascript에 다음과 같이 전달하십시오.'self.mainThread.view.page(). mainFrame(). evaluateJavaScript (code)'이것이 올바른 접근 방식이라고 생각하지 않습니다. – Matej