pyqt 如何实现鼠标拖入文件然后可以读取文件

用什么工具触发什么事件啊... 用什么工具 触发什么事件啊 展开
 我来答
edokawa
2016-06-05 · TA获得超过103个赞
知道答主
回答量:26
采纳率:0%
帮助的人:9.4万
展开全部
14年的问题,估计现在都解决了。纯粹是看不爽垃圾答案横行的百度
这是网上一篇在对话框里拖放文件在命令行里显示文件路径的代码,核心内容是
按钮的self.setAcceptDrops(True)和后面的drag事件函数。

# -*- coding: utf-8 -*-

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

from PyQt4 import QtGui, QtCore

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s

try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

class Button(QtGui.QPushButton):
def __init__(self, parent):
super(Button, self).__init__(parent)
self.setAcceptDrops(True)
#self.setDragDropMode(QAbstractItemView.InternalMove)

def dragEnterEvent(self, event):
if event.mimeData().hasUrls():
event.acceptProposedAction()
else:
super(Button, self).dragEnterEvent(event)

def dragMoveEvent(self, event):
super(Button, self).dragMoveEvent(event)

def dropEvent(self, event):
if event.mimeData().hasUrls():

#遍历输出拖动进来的所有文件路径
for url in event.mimeData().urls():
print str(url.toLocalFile()).decode('UTF-8').encode('GBK')

event.acceptProposedAction()
else:
super(Button,self).dropEvent(event)

class MyWindow(QtGui.QWidget):
def __init__(self):
super(MyWindow,self).__init__()
self.setGeometry(100,100,300,400)
self.setWindowTitle("Filenames")

self.btn = Button(self)
self.btn.setGeometry(QtCore.QRect(90, 90, 61, 51))
self.btn.setText("Change Me!")
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.btn)

self.setLayout(layout)

if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
zpnuf680
2014-06-09 · TA获得超过194个赞
知道答主
回答量:326
采纳率:66%
帮助的人:139万
展开全部
应该是MM们看到的角色有很多惊人的疤痕会分享成果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-06-07
展开全部
这个要相关专业人员才懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式