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新类继承QMainWindowUi_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

♠ 结语

若是觉得博主的文章写的不错不妨关注一下博主点赞一下博文另博主能力有限若文中有出现什么错误的地方欢迎各位评论指摘。

👉 本文属于原创文章转载请评论留言并在转载文章头部著名作者出处👈
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6