可以
import webview
from webview.dom import DOMEventHandler
def on_drop(e):
"""drop 事件回调,e 是字典"""
files = e['dataTransfer']['files']
if not files:
return
for f in files:
abs_path = f.get('pywebviewFullPath') # 关键:真实路径
print('[收到拖放]', abs_path)
# 如果还想把路径发回 Python 业务层
# window.evaluate_js(f'pywebview.api.deal_with_path("{abs_path}")')
def bind_dom(window):
"""把事件挂到 document 上,也可挂到任意元素"""
doc = window.dom.document
doc.events.drop += DOMEventHandler(on_drop, prevent_default=True, stop_propagation=True)
# 记得阻止默认行为,否则浏览器会直接用页面打开文件
doc.events.dragover += DOMEventHandler(lambda _: None, prevent_default=True)
if __name__ == '__main__':
window = webview.create_window(
'pywebview 6.0 拖放取路径',
html='''
<body style="height:100vh;display:flex;align-items:center;justify-content:center;">
<h1>把文件拖进来(任意位置)</h1>
</body>
'''
)
webview.start(bind_dom, window, debug=True) 网友回复


