PyQt5利用Qt Designer制作一个可以拖动获取文件信息的页面
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
本篇在讲什么 用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
♠ 结语
若是觉得博主的文章写的不错不妨关注一下博主点赞一下博文另博主能力有限若文中有出现什么错误的地方欢迎各位评论指摘。