1
我正在使用PyQt中的應用程序。我用QWebView製作了UI,它用HTML頁面加載。如何捕捉一個文件事件被從桌面拖放到Qt(PyQt)應用程序中的QWebView使用javascript
此HTML頁面包含一個JavaScript代碼,用於檢測某個文件是否放在某個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代碼,這工作正常。
如果我在QWebView中運行我的應用程序和D & D文件,則JavaScript代碼無法執行。
我擴展了QWebView並添加了事件,所以我可以用python捕捉到D & D事件。
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中有沒有一個選項可以直接用javascript捕獲這樣的事件?
我會很高興繼續捕捉事件的Python代碼,但現在我唯一的解決方案是我用Python捕獲D&D事件,然後以某種方式獲得鼠標光標的X和Y位置。然後將X,Y和文件名傳遞給javascript,如下所示:'self.mainThread.view.page()。mainFrame()。evaluateJavaScript(code)'我不認爲這是正確的方法。 – Matej