pyqt5写一个文本处理软件

参考资料https://www.zhihu.com/column/pyqt5

导入安装包

pip install PyQt5 -i https://pypi.douban.com/simple
pip install PyQt5-tools -i https://pypi.douban.com/simple

pyqt5 designer

如何将生成的UI文件转化为py代码

pyuic5 main.ui -o main.py

好的,下面是一个简单的文件处理程序页面的设计代码示例:

文件处理示例

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QTextEdit, QFileDialogclass FileProcessor(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):# 设置窗口标题self.setWindowTitle('文件处理程序')# 创建主窗口部件main_widget = QWidget()self.setCentralWidget(main_widget)# 创建垂直布局vbox = QVBoxLayout()# 创建水平布局hbox1 = QHBoxLayout()hbox2 = QHBoxLayout()# 添加标签和文本框到第一行水平布局label1 = QLabel('输入文件路径:')self.input_path = QLineEdit()hbox1.addWidget(label1)hbox1.addWidget(self.input_path)# 添加打开文件按钮到第一行水平布局open_button = QPushButton('打开文件')open_button.clicked.connect(self.open_file_dialog)hbox1.addWidget(open_button)# 添加标签和文本框到第二行水平布局label2 = QLabel('输出文件路径:')self.output_path = QLineEdit()hbox2.addWidget(label2)hbox2.addWidget(self.output_path)# 添加保存文件按钮到第二行水平布局save_button = QPushButton('保存文件')save_button.clicked.connect(self.save_file_dialog)hbox2.addWidget(save_button)# 添加两个水平布局到垂直布局vbox.addLayout(hbox1)vbox.addLayout(hbox2)# 添加文本框到垂直布局self.text_edit = QTextEdit()vbox.addWidget(self.text_edit)# 设置主窗口部件的布局main_widget.setLayout(vbox)def open_file_dialog(self):# 打开文件对话框file_path, _ = QFileDialog.getOpenFileName(self, '打开文件', '', 'Text Files (*.txt);;All Files (*)')if file_path:self.input_path.setText(file_path)def save_file_dialog(self):# 保存文件对话框file_path, _ = QFileDialog.getSaveFileName(self, '保存文件', '', 'Text Files (*.txt);;All Files (*)')if file_path:self.output_path.setText(file_path)if __name__ == '__main__':app = QApplication(sys.argv)fp = FileProcessor()fp.show()sys.exit(app.exec_())

文件界面

import sys
from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Dialog(object):def setupUi(self, Dialog):Dialog.setObjectName("Dialog")Dialog.resize(769, 311)self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)self.verticalLayout.setObjectName("verticalLayout")self.label_2 = QtWidgets.QLabel(Dialog)self.label_2.setObjectName("label_2")self.verticalLayout.addWidget(self.label_2)self.listWidget = QtWidgets.QListWidget(Dialog)self.listWidget.setObjectName("listWidget")self.verticalLayout.addWidget(self.listWidget)self.label_3 = QtWidgets.QLabel(Dialog)self.label_3.setObjectName("label_3")self.verticalLayout.addWidget(self.label_3)self.pushButton_2 = QtWidgets.QPushButton(Dialog)self.pushButton_2.setObjectName("pushButton_2")self.verticalLayout.addWidget(self.pushButton_2)self.pushButton = QtWidgets.QPushButton(Dialog)self.pushButton.setObjectName("pushButton")self.verticalLayout.addWidget(self.pushButton)self.label = QtWidgets.QLabel(Dialog)self.label.setObjectName("label")self.verticalLayout.addWidget(self.label)self.listView = QtWidgets.QListView(Dialog)self.listView.setObjectName("listView")self.verticalLayout.addWidget(self.listView)self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)self.buttonBox.setOrientation(QtCore.Qt.Horizontal)self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)self.buttonBox.setObjectName("buttonBox")self.verticalLayout.addWidget(self.buttonBox)self.retranslateUi(Dialog)self.buttonBox.accepted.connect(Dialog.accept) # type: ignoreself.buttonBox.rejected.connect(Dialog.reject) # type: ignoreQtCore.QMetaObject.connectSlotsByName(Dialog)def retranslateUi(self, Dialog):_translate = QtCore.QCoreApplication.translateDialog.setWindowTitle(_translate("Dialog", "Dialog"))self.label_2.setText(_translate("Dialog", "输入文件"))self.label_3.setText(_translate("Dialog", "操作"))self.pushButton_2.setText(_translate("Dialog", "双周数据图表"))self.pushButton.setText(_translate("Dialog", "周销明细"))self.label.setText(_translate("Dialog", "输出文件"))if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QDialog()ui = Ui_Dialog()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())

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

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

相关文章

cf-913-div3

title: cf 913 div3 date: 2024-01-16 16:42:45 tags: vp categories: 比赛 A. Rook 题目大意 可以在棋盘上横向或纵向移动任意步数,找出车的所有走法 解题思路 直接输出横向和纵向车能移动的位置即可 代码实现 void solve() {string s; cin >> s;string …

走迷宫之推箱子

前言: 在上一篇文章当中我介绍了一个走迷宫的写法,但是那个迷宫没什么可玩性和趣味性,所以我打算在迷宫的基础上加上一个推箱子,使之有更好的操作空间,从而增强了游戏的可玩性和趣味性。 1. 打印菜单 void menu() {…

探索 Python:发现有趣的库——第 1 章:数据可视化之旅

在一个充满活力的科技世界中,数据分析专家“算法仙”和编程爱好者“代码侠”相遇了,决定一起踏上数据可视化的探险之旅。他们将运用 Matplotlib 和 Seaborn 这两个强大的 Python 库,将枯燥的数据转化为生动的图形。 算法仙:你好&…

为什么要进行数模转换,数模转换的应用场景有哪些?

问题描述:为什么要进行数模转换,数模转换的应用场景有哪些? 问题解答: 数模转换(Digital-to-Analog Conversion,简称DAC)是将数字信号转换为模拟信号的过程。进行数模转换的原因和一些应用场景…

Kafka 的 Consumer Group 解读

作为一份笔记,本文再次梳理一下 Kafka 的 Consumer Group。我们知道,一个 Topic 往往会有多个 Partition,一条消息只会被写到一个 Kafka 的 Partition 中,那 Consumer 是怎么消费 Message 的呢? Consumer Group 又从中…

如何低成本打造高效跨国企业内网

随着企业数字化转型的加速,企业对网络连接、安全性和可靠性的需求也变得越来越高,最近小编收到了好几封私信,咨询跨境企业内部组网方案。 投稿的是某跨国公司的IT运维人员,总部在海外,国内分支机构每天都需要进行数据互…

【ASP.NET Core 基础知识】--中间件--什么是中间件

本篇文章作为中间件单元的开篇文章,通过这篇文章可以了解什么是中间件、内置中间件的使用以及怎么创建自定义中间件。我们先来看一下中间件的角色、目的和重要性。 1. 角色 请求处理管道的构建块: 中间件是构成ASP.NET Core请求处理管道的基本组成部分…

[Android]实现一个权限申请类

[Android]实现一个权限申请类 导言 在引入了动态权限申请之后,Android的权限申请就变得尤为繁琐,若是按照原有的方法一板一眼地进行申请,样板代码未免太多。因此本篇文章就使用ActivityResult API,来实现一个简单的权限申请类来帮…

C练习——魔术师猜三位数

题目: 有一种室内互动游戏,魔术师要每位观众心里想一个三位数abc(a、b、c分别是百位、十位和个位数字),然后魔术师让观众心中记下acb、bac、bca、cab、cba五个数以及这5个数的和值。只要观众说出这个和是多少&#xf…

设计模式之多线程分工模式--- 生产-消费者模式

系列文章目录 设计模式之避免共享的设计模式Immutability(不变性)模式 设计模式之并发特定场景下的设计模式 Two-phase Termination(两阶段终止)模式 设计模式之避免共享的设计模式Copy-on-Write模式 设计模式之避免共享的设计模…

Linux定时删除n天前的数据

Linux定时删除n天前的数据 1.创建删除脚本并授权 touch /home/data/script/shell/auto-del-60-days-ago-log.sh chmod x auto-del-60-days-ago-log.sh 2.编写shell脚本(auto-del-60-days-ago-log.sh) vi auto-del-60-days-ago-log.sh 添加如下内容&a…

Golang 替换数字卡码54题

文章目录 替换数字 54卡码网直接操作读取的[]byte 替换数字 54卡码网 本题为卡码网的54题,起为acm模式的答题 这里我们不在输入获得的[]byte类型上直接修改,而是保存在新建的[]byte上 golang小知识: 单引号’,表示byte类型或rune…

进程的创建与回收学习笔记

目录 一、进程内容: 二、进程常用命令 三、创建子进程 四、子进程进阶 五、进程的退出 六、进程的回收 一、进程内容: 程序: 存放在磁盘上的指令和数据的有序集合(文件) 静态的 进程: 执行一个程序所…

Image Sensor常见分辨率下HTS,VTS设置

本文介绍Image Sensor常见分辨率下HTS,VTS设置。 Image Sensor的HTS,VTS设置非常重要,其与Pixel Clock和FPS有一定的相关性,本文列出常见的分辨率下HTS,VTS的设置。 常见的分辨率下HTS,VTS的设置如下表。…

拍照后的相机logo怎么去掉?看完你就知道了

在日常生活中,拍照已经成为了我们捕捉美好瞬间的习惯。山川湖海、花鸟鱼虫,城市风光、街角趣闻,我们都喜欢用相机或手机留住这些美好的回忆。然而,有时候,当我们按下的那一刹那,一些不速之客——logo&#…

SQL语句详解五-DCL(数据控制语言)

文章目录 DCL管理用户示例代码 权限管理示例代码用户权限 DCL 概述:DCL,数据库控制语言,用来管理用户和给用户授予权限的 管理用户 添加用户 CREATE USER 用户名主机名 IDENTIFIED BY 密码;删除用户 DROP USER 用户名主机名;修改用户密码 S…

安全狗连续3年获得中国网络空间安全协会感谢

在2024年的新年伊始,安全狗依托在2023年期间协助中国网络空间安全协会完成《网络安全态势感知研判分析报告》并支持相关网络安全态势研判工作而获得感谢信。 厦门服云信息科技有限公司(品牌名:安全狗)创办于2013年,是…

3d模型为什么打光只显示黑色---模大狮模型网

3D建模是现代制作动画、电影、游戏等数字媒体内容的重要工具。在建模过程中,打光是一个重要的环节,它可以让3D模型更加真实、有趣和生动。然而,如果打光不当,3D模型可能会呈现出黑色的效果,这可能会让人感到困惑和沮丧…

mybatisplus多租户执行复杂sql(如带case when之类的语句)报错问题

mybatisplus在多租户情况下,执行复杂sql时,会报:Failed to process,Error SQL:select ...,之前版本是加SqlParser注解关闭租户验证,新版本替换为:InterceptorIgnore(tenantLine "1")

vue批量下载图片打包为压缩包

yarn add jszip yarn add file-saver<template><div class"home"><button click"attachDownload">批量下载</button><div class"home_wrap"><div class"home_wrap_item" v-for"item in imageLi…