本篇在讲什么 用pyqt5制作一个简单的程序,拖动文件或脚本可以读取文件信息 本篇适合什么 适合初学PyQt5的小白 本篇需要什么 对Python语法有简单认知 对Qt有简单认知 依赖Pycharm编辑器 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 |
![]() ★提高阅读体验★ 👉 ♠ 一级标题 👈👉 ♥ 二级标题 👈👉 ♣ 三级标题 👈👉 ♦ 四级标题 👈 |
♠ 演示
以下效果是制作完成后的整体演示效果
♠ 制作页面
页面很简单,只有一个QTextEdit
组件用来显示文件信息
♠ 重写拖动事件
因为ui文件直接生成的py文件内并没有重写拖动相关的方法,所以我们需要重写一下,写在生成的py文件里每次重新生成都会被覆盖
♥ 引用相关的脚本
from PyQt5.QtWidgets import QApplication, QMainWindow
from main_win.mainUI import Ui_MainWindow
mainUI
文件就是我们刚制作的ui转换的py文件,不知道怎么吧ui文件转py的同学可以看博主之前的文章,Ui_MainWindow
是mainUI.py里的类名
♥ 重写
class DragChangeWin(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(DragChangeWin, self).__init__(parent)
self.setupUi(self)
# 调用Drops方法
self.setAcceptDrops(True)
# 鼠标进入
def dragEnterEvent(self, evn):
print("鼠标进入")
evn.accept()
# 鼠标放开
def dropEvent(self, evn):
print("鼠标放开")
# 鼠标拖动
def dragMoveEvent(self, evn):
print("鼠标拖动")
要点1:
新类继承QMainWindow
和Ui_MainWindow
要点2:
拖动的进入事件dragEnterEvent
要点3:
拖动的结束事件dropEvent
要点4:
拖动的移动事件dragMoveEvent
♥ 获取文件并读取
在dropEvent方法内我们通过evn参数可以获取到拖动文件的路径
# 鼠标放开
def dropEvent(self, evn):
filePath = evn.mimeData().text().split("///")[1]
file = open(filePath, 'r', encoding="UTF-8")
content = file.read()
file.close()
print(content)
要点1:
通过evn.mimeData().text()
方法可以获取到拖动文件的路径,路径格式如下所示
file:///C:/Users/Administrator/Desktop/1.txt
要点2:
通过分割字符串可以获取到可用的路径信息
♠ 完整代码
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from main_win.mainUI import Ui_MainWindow
class DragChangeWin(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(DragChangeWin, self).__init__(parent)
self.setupUi(self)
# 调用Drops方法
self.setAcceptDrops(True)
# 鼠标进入
def dragEnterEvent(self, evn):
# 鼠标放开函数事件
evn.accept()
# 鼠标放开
def dropEvent(self, evn):
filePath = evn.mimeData().text().split("///")[1]
file = open(filePath, 'r', encoding="UTF-8")
content = file.read()
file.close()
self.textEdit.setText(content)
# 鼠标拖动
def dragMoveEvent(self, evn):
print("3333333333333333333")
if __name__ == '__main__':
# app初始化
app = QApplication(sys.argv)
dragWin = DragChangeWin()
dragWin.show()
dragWin.setFixedSize(dragWin.width(), dragWin.height())
sys.exit(app.exec_())
♠ 推送
- Github
https://github.com/KingSun5
♠ 结语
若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。