PyQt5利用Qt Designer制作一个可以拖动获取文件信息的页面

news2024/11/17 20:27:24
前言
本篇在讲什么

用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

♠ 结语

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

👉 本文属于原创文章,转载请评论留言,并在转载文章头部著名作者出处👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Golang实战]整理Golang忽略的问题

整理Golang忽略的问题参考资料1.WaitGroup与GoRoutine的竞速2.Mutex互斥锁和RWMutex互斥读写锁3.poll,select,epoll4.何时栈和堆?5.GoRoutine合理使用6.GoRoutine优雅退出6.1data channel关闭通知退出6.2exit channel关闭通知退出6.3context超时或取消通知退出6.4WaitGroup/Er…

IPWorks EDI 2022.0.8381 for NET Crack

IPWorks EDI基于用于安全 EDI 通信(AS2、SFTP、OFTP、RosettaNet、MLLP 等)的领先 EDI-INT 协议,IPWorks EDI 库包含促进安全 EDI 消息传递以及 EDI 映射、翻译和验证(X12、 EDIFACT、HL7、TRADACOMS、VDA、XML 和 JSON&#xff0…

golang/安装

golang中文官网 https://golang.google.cn/ golang下载 安装 一路next 配置 配置值说明GOROOTD:\ProgramFiles\golanggolang安装目录PATHD:\ProgramFiles\golang\bingolang命令路径GO111MODULEon开启go.mod功能,go.mod是go官方依赖包管理工具GOPROXYhttps://go…

【FPGA笔记系列7】时序逻辑电路基础D触发器

时序逻辑电路 组合逻辑与时序逻辑电路的本质区别:时序逻辑电路的输出和前一时刻的状态有关,组合逻辑电路的输出只和当前的输入有关 与非门RS锁存器的缺陷:当SR从00变到11时,状态不稳定! 电路中小圈圈表示低电平有效! 透明锁存器 R=1当En=1时,Q=S当En=0时,后面为RS触发器…

使用git合并两个不同项目代码

使用git合并两个不同项目代码 前言, 这里解决的是两个不同的项目, 因为不同项目那必然是两个不同的git仓库 都是不同的git仓库了那就更不可能是相同的分支了(即使分支名相同) 至于为什么会有这种业务情况出现, 我也不知道, 反正先学干就完了 这里图形化界面演示用的是idea自带的…

人工智能时代八大类算法你了解吗?(包邮送书6本)

文章目录本文导读1. 关联规则分析2. 回归分析3. 分类分析4. 聚类分析5. 集成学习6. 自然语言处理7. 图像处理8. 深度学习9. 书籍推荐(包邮送书6本)本文导读 从零带你了解人工智能时代需要掌握的8大类算法,包括基础理论、关联规则分析、回归分…

Java-基础-4.IO流

一:为什么有IO流? 在显示生产中,我们的数据,都是不停的往过输入和输出,我们将这种模式称作为流。并且在输入和输出的过程中,我们包装了一些其他类。 二:什么是IO流? 1. 按照数据处理…

Linux学习之常用基本命令【1】

文章目录前言一 Linux系统简介二 补充知识Unix和Minix三 开关机命令四 系统目录结构五 树形显示文件目录结构六 目录管理6.0 目录操作常用命令6.1 ls(列出目录)【常用命令】6.2 cd(切换目录)6.3 pwd( 显示当前所在的目录 )6.4 mkdir(make directory创建目录&#xf…

Power BI折线图

如果要展现数据的趋势变化,折线图应该是不二之选,并且它更擅长于展现时间序列下的数据,根据折线斜率的不同展现变化的速率。 本文使用PowerBI Desktop来轻松生成一个折线图。 案例数据:2006-2015年各省市的三个产业的产值&#…

【SAP Abap】X档案:SAP 快速提供基础数据给第三方系统访问的几种方法

SAP 快速提供基础数据给第三方系统访问的几种方法1、数据封装2、开放RFC访问3、开放接口服务4、开放DB访问1、数据封装 在企业信息系统建设过程中,少不了的就是系统集成数据对接。 尤其是SAP系统中大量的基础数据集成,如各种字段值域,需要提…

Vue2笔记02 表单数据,过滤器,常见指令,生命周期,组件

表单数据 过滤器 过滤器:将数据进行简单处理后再使用 好用的第三方库的网站:BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务 显示当前时间计算属性的写法 过滤器的写法 多个过滤器可以串联 👆这里的过滤器是局部过滤器&#xff0c…

day03_java基本语法

今日内容 零、复习昨日 一、开发工具 二、Eclipse使用 三、程序解读 四、输出语句 五、常量 六、变量 七、数据类型 零、 复习昨日 见晨考.txt 一、开发工具 开发工具: Eclipse(免费),IDEA(收费) 1.1 Eclipse安装 Eclipse是绿色安全的,直接解压即可使用 1.2 启动Eclipse ps:…

原型和原型链

什么是原型? 因为每一个函数都有一个属性,这个属性名就是prototype,(即为显式原型) 这个属性的值是一个对象 每一个实例对象都有一个__proto__(即为隐式原型) 原型就是函数的prototype属性,…

excel数据比较:如何做一个完美的多条件排名方案

排名,简单;但如果有多个项目类别,并且可能存在业绩相同,怎么快速找出各个分享排名第一的人物呢?这就要通过多条件去匹配,才能找出需要的排名第一者。这里提供了两个方案,但都不够完美&#xff0…

Unity-TCP-网络聊天功能(三): 公共/私人聊天、添加好友、好友上下线、新消息提醒、点击好友聊天、退出登录

7.多人公共聊天、私人聊天、添加好友、好友上下线、新消息提醒、点击好友开始聊天、退出登录搭建好ChatView的UI和ChatItem编写Unity-Scripts/View/ChatView.cs脚本,加入了私人聊天和公共聊天逻辑,chatView界面处理接收(ChatHandle委托&#…

在 Linux 中创建用户 and 给用户设置密码相关操作

目录 一、创建用户 二、给用户设置密码相关操作 ②.①、修改用户密码 ②.②、设置用户密码 ②.③、删除用户密码 一、创建用户 语法: useradd [-g 用户组名 -d home目录] 用户名 在 Linux 中“[]”里面的内容都代表可选,可以不写。 useradd&…

【数据结构】归并排序、快速排序(递归法和非递归法)

文章目录 一、归并排序 递归法 思想 程序代码 时间复杂度 非递归法 思想 程序代码 二、快速排序(挖坑法) 思想 程序代码 时间复杂度 三、快速排序(hoare法) 思想 程序代码 hoare法错误集锦 死循环 越界 四、快…

kubernetes pod内容器状态OOMKilled和退出码137全流程解析

kubernetes pod内容器状态OOMKilled和退出码137全流程解析 - 简书 使用event_control监听memory cgroup的oom事件 - 简书 kubernetes/k8s CRI分析-kubelet删除pod分析 - 良凯尔 - 博客园 在kubernetes的实际生产实践中,经常会看到pod内的容器因为内存使用超限被内…

【My Electronic Notes系列——数字电路基础知识】

目录 序言: 🏆🏆人生在世,成功并非易事,他需要破茧而出的决心,他需要永不放弃的信念,他需要水滴石穿的坚持,他需要自强不息的勇气,他需要无畏无惧的凛然。要想成功&…

从战略、管理、业务、产品这4个维度,思考从0到1的产品设计

引言对于B端产品经理而言,从0~1的产品设计考验一个人的规划能力、统筹能力与产品设计能力,与日常产品迭代的方法流程具备差异,如何进行从0~1的产品设计?我针对自身经验梳理总结,希望下面的文章能…