Python PyQt5

实现界面开发,与tkinter功能一致,网上已有详细资料,此处仅记录自己的代码:

文章目录

  • 1. 实操
    • 1.1 main.py
    • 1.2. 窗体模块代码
    • 1.3. 页面效果
  • 2. 参考资料
    • 2.1. PyQt5 参考资料
    • 2.2. tkinter 参考资料
  • 3. 安装注意事项
    • 3.1. 下载
    • 3.2 Pycharm添加External Tools

1. 实操

实现功能:读取.h文件,读取结构体、枚举、函数信息,在word文档中按照相应格式进行生成。此处仅实现界面相关的功能,具体功能待添加。

word相关操作见:
Python docx学习笔记

1.1 main.py

from testQtui import Ui_MainWindow 
import sys
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets
import ospaths=[]  # paths[0]:Module.h文件路径, paths[1]:Module_hw.h文件路径
def addModulePath(self):fileName, fileType = QtWidgets.QFileDialog.getOpenFileName(None, "选取文件", os.getcwd(),"All Files(*);;Text Files(*.txt)")paths.insert(0,fileName)ui.inputModuleLineEdit.setText(fileName)print(paths)def addModule_HwPath(self):fileName, fileType = QtWidgets.QFileDialog.getOpenFileName(None, "选取文件", os.getcwd(),"All Files(*);;Text Files(*.txt)")paths.insert(1,fileName)ui.inputModulel_HwLineEdit.setText(fileName)print(paths)def StartGen(self):print(ui.comboBox.currentText())  # 获取下拉列表模块当前的选项for i in range(1, 50):            # 打印log信息ui.logBrowser.append('test'+ str(i))ui.logBrowser.ensureCursorVisible()ui.OutputFilePathLineEdit.setText('xxxx')  # 输出生成文件的路径if __name__ == '__main__':app = QApplication(sys.argv)MainWindow = QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)# MainWindow.setWindowTitle("文档生成")  # 设置页面标题,目前在节目中已经设置MainWindow.show()ui.addModuleButton.clicked.connect(addModulePath)   # addModuleButton 按键按下实践关联到addModulePath函数ui.addModule_HwButton.clicked.connect(addModule_HwPath)ui.StartGen.clicked.connect(StartGen)sys.exit(app.exec_())

1.2. 窗体模块代码

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'testQtui.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(520, 402)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.inputModuleLineEdit = QtWidgets.QLineEdit(self.centralwidget)self.inputModuleLineEdit.setGeometry(QtCore.QRect(140, 50, 261, 20))self.inputModuleLineEdit.setFocusPolicy(QtCore.Qt.StrongFocus)self.inputModuleLineEdit.setObjectName("inputModuleLineEdit")self.addModuleButton = QtWidgets.QPushButton(self.centralwidget)self.addModuleButton.setGeometry(QtCore.QRect(410, 50, 75, 23))self.addModuleButton.setObjectName("addModuleButton")self.logBrowser = QtWidgets.QTextBrowser(self.centralwidget)self.logBrowser.setGeometry(QtCore.QRect(140, 120, 261, 171))self.logBrowser.setObjectName("logBrowser")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(23, 51, 81, 16))font = QtGui.QFont()font.setPointSize(12)self.label.setFont(font)self.label.setLineWidth(1)self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(self.centralwidget)self.label_2.setGeometry(QtCore.QRect(20, 120, 91, 16))font = QtGui.QFont()font.setPointSize(12)self.label_2.setFont(font)self.label_2.setLineWidth(1)self.label_2.setObjectName("label_2")self.addModule_HwButton = QtWidgets.QPushButton(self.centralwidget)self.addModule_HwButton.setGeometry(QtCore.QRect(410, 80, 75, 23))self.addModule_HwButton.setObjectName("addModule_HwButton")self.inputModulel_HwLineEdit = QtWidgets.QLineEdit(self.centralwidget)self.inputModulel_HwLineEdit.setGeometry(QtCore.QRect(140, 80, 261, 20))self.inputModulel_HwLineEdit.setObjectName("inputModulel_HwLineEdit")self.label_3 = QtWidgets.QLabel(self.centralwidget)self.label_3.setGeometry(QtCore.QRect(23, 82, 91, 16))font = QtGui.QFont()font.setPointSize(12)self.label_3.setFont(font)self.label_3.setLineWidth(1)self.label_3.setObjectName("label_3")self.label_4 = QtWidgets.QLabel(self.centralwidget)self.label_4.setGeometry(QtCore.QRect(23, 22, 80, 16))font = QtGui.QFont()font.setPointSize(12)self.label_4.setFont(font)self.label_4.setLineWidth(1)self.label_4.setObjectName("label_4")self.label_5 = QtWidgets.QLabel(self.centralwidget)self.label_5.setGeometry(QtCore.QRect(10, 330, 381, 21))font = QtGui.QFont()font.setPointSize(12)self.label_5.setFont(font)self.label_5.setLineWidth(1)self.label_5.setObjectName("label_5")self.StartGen = QtWidgets.QPushButton(self.centralwidget)self.StartGen.setGeometry(QtCore.QRect(410, 120, 75, 23))self.StartGen.setObjectName("StartGen")self.label_6 = QtWidgets.QLabel(self.centralwidget)self.label_6.setGeometry(QtCore.QRect(20, 300, 91, 16))font = QtGui.QFont()font.setPointSize(12)self.label_6.setFont(font)self.label_6.setLineWidth(1)self.label_6.setObjectName("label_6")self.OutputFilePathLineEdit = QtWidgets.QLineEdit(self.centralwidget)self.OutputFilePathLineEdit.setGeometry(QtCore.QRect(140, 300, 261, 20))self.OutputFilePathLineEdit.setFocusPolicy(QtCore.Qt.StrongFocus)self.OutputFilePathLineEdit.setObjectName("OutputFilePathLineEdit")self.comboBox = QtWidgets.QComboBox(self.centralwidget)self.comboBox.setGeometry(QtCore.QRect(140, 20, 86, 21))font = QtGui.QFont()font.setPointSize(11)self.comboBox.setFont(font)self.comboBox.setObjectName("comboBox")self.comboBox.addItem("")self.comboBox.addItem("")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 520, 23))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)self.menubar.hovered['QAction*'].connect(self.menubar.close) # type: ignoreQtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))self.addModuleButton.setText(_translate("MainWindow", "添加文件"))self.label.setText(_translate("MainWindow", "Module.h:"))self.label_2.setText(_translate("MainWindow", "log信息:"))self.addModule_HwButton.setText(_translate("MainWindow", "添加文件"))self.label_3.setText(_translate("MainWindow", "Module_Hw.h:"))self.label_4.setText(_translate("MainWindow", "目标文件:"))self.label_5.setText(_translate("MainWindow", "备注:详细设计需要额外增加Module_Hw.h文件。"))self.StartGen.setText(_translate("MainWindow", "开始生成"))self.label_6.setText(_translate("MainWindow", "输出文件:"))self.comboBox.setItemText(0, _translate("MainWindow", "用户手册"))self.comboBox.setItemText(1, _translate("MainWindow", "详细设计"))

1.3. 页面效果

在这里插入图片描述

2. 参考资料

2.1. PyQt5 参考资料

1、安装教程:https://blog.csdn.net/qq_32892383/article/details/108867482
2、使用教程:https://zhuanlan.zhihu.com/p/269273821

2.2. tkinter 参考资料

1、https://blog.csdn.net/bigzql/article/details/116036439
2、https://www.runoob.com/python/python-gui-tkinter.html

3. 安装注意事项

3.1. 下载

PyqQt5和PyQt5-tools建议使用国内的镜像源,否则速度很慢
相关命令如下:

pip install -i https://mirrors.aliyun.com/pypi/simple/ Pyqt5-tools
pip install -i https://mirrors.aliyun.com/pypi/simple/ Pyqt5

注意:这里使用的是国内阿里云的镜像,网上查到的地址是http打头的,但实际运行时需要使用https的头才能正确下载,原因未知

3.2 Pycharm添加External Tools

教程中PyQt5的版本可能比较老,我目前(2024年03月)装的是5.15.10版本的PyQt5,designer.exe文件已经搬到…Python310\Lib\site-packages\qt5_applications\Qt\bin路径下面

安装教程截图
在这里插入图片描述
实际路径
在这里插入图片描述

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

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

相关文章

解决jenkins运行磁盘满的问题

参考:https://blog.csdn.net/ouyang_peng/article/details/79225993 分配磁盘空间相关操作: https://cloud.tencent.com/developer/article/2230624 登录jenkins相对应的服务或容器中查看磁盘情况: df -h在102挂载服务器上看到是这两个文件…

数据结构:详解【栈和队列】的实现

目录 1. 栈1.1 栈的概念及结构1.2 栈的实现1.3 栈的功能1.4 栈的功能的实现1.5 完整代码 2. 队列2.1 队列的概念及结构2.2 队列的实现2.3 队列的功能2.4 队列的功能的实现2.5 完整代码 1. 栈 1.1 栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的…

leecode1793 | 好子数组的最大分数 | 求给高度矩阵最大值

题目我就不念了,就一个字难理解,给的题总是这么难懂,总感觉出题人的语文是体育老师教的? 还有就是思维转变,才能能好的理解?一味的钻牛角尖死理解,效果不好 思维的转变 >悟性?&am…

使用远程工具连接Mysql

(若想要远程连接Mysql需要下面解决四个问题) 1、目标地址 直接查询 2、端口号 3306 3、防火墙关闭 [rootlocalhost date]# systemctl stop firewalld.service 4、授权mysql数据库root用户权限(因为mysql开始不允许其他IP访问&#xff0…

Docker 学习笔记

Play With Docker一个免费使用的基于web界面的Docker环境 常用docker命令 可使用docker COMMAND --help查看命令的用法 Docker镜像相关 1、docker image pull:用于下载镜像,镜像从远程镜像仓库服务的仓库中下载,默认从Docker Hub的仓库中拉…

ssm基于Vue.js的在线购物系统的设计与实现论文

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于在线购物系统当然也不能排除在外,随着网络技术的不断成熟,带动了在线购物系统,它彻底改变了过去传统的…

OKR与敏捷开发、精益创业等方法如何协同工作?

在快速变化的市场环境中,企业需要更加灵活和高效地应对各种挑战。目标与关键成果法(OKR)、敏捷开发以及精益创业等方法,作为现代企业管理的重要工具,各自在推动企业发展、提高团队效率、优化产品迭代等方面发挥着不可或…

社科赛斯考研:二十二载岁月铸辉煌,穿越周期的生命力之源

在考研培训行业的浩瀚海洋中,社科赛斯考研犹如一艘稳健的巨轮,历经二十二载风礼,依然破浪前行。在考研市场竞争白热化与学生对于考研机构要求越来越高的双重影响下,社科赛斯考研却以一种分蘖成长的姿态,扎根、壮大&…

基于springboot的mysql实现读写分离

前言: 首先思考一个问题:在高并发的场景中,关于数据库都有哪些优化的手段?常用的有以下的实现方法:读写分离、加缓存、主从架构集群、分库分表等,在互联网应用中,大部分都是读多写少的场景,设置两个库,主库和读库,主库的职能是负责写,从库主要是负责读…

2核4G服务器优惠价格和性能测试,2024年

阿里云2核4G服务器租用优惠价格,轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月,活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图: 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

【原创】基于分位数回归的卷积长短期神经网络(CNN-QRLSTM)回归预测的MATLAB实现

基于分位数回归的卷积长短期神经网络(CNN-QRLSTM)是一种用于时间序列预测的深度学习模型,结合了卷积神经网络(CNN)和长短期记忆网络(LSTM),并采用分位数回归技术进行预测。 这个模型…

YOLOV9训练自己的数据集

1.代码下载地址GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 2.准备自己的数据集 这里数据集我以SAR数据集为例 具体的下载链接如下所示: 链接:https:/…

面试题小结

一、什么是虚拟dom 描述真实dom的js对象。 二、DOM操作——怎样添加、移除、移动、复制、创建和查找节点 (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节…

全栈的自我修养 ———— uniapp中加密方法

直接按部就班一步一步来 一、首先创建一个js文件填入AES二、创建加密解密方法三、测试 一、首先创建一个js文件填入AES 直接复制以下内容 /* CryptoJS v3.1.2 code.google.com/p/crypto-js (c) 2009-2013 by Jeff Mott. All rights reserved. code.google.com/p/crypto-js/wi…

SpringCloud入门(1) Eureka Ribbon Nacos

这里写目录标题 认识微服务SpringCloud 服务拆分和远程调用服务拆分案例实现远程调用 RestTemplate Eureka注册中心Eureka的结构和作用搭建eureka-server服务注册服务发现 Ribbon负载均衡 LoadBalancedLoadBalancerIntercepor源码解析负载均衡策略饥饿加载 Nacos注册中心安装与…

【NLP】从变形金刚到Transfomer 01

Transformer是一种非常强大的模型,在自然语言处理(NLP)领域里引起了一场革命。 "从变形金刚到技术革命家,Transformer不再仅是儿时屏幕上的英雄。🤖✨ 在今天的AI领域,它变身成为自然语言处理的超级英…

通过Anaconda安装Python会得到的重要文件夹

E:\Anaconda\路径下 Scripts 文件夹:该文件夹包含了可执行的Python脚本文件,例如pip和conda等命令行工具。【pip3.exe和django-admin.exe等】Lib 文件夹:该文件夹包含了Python的标准库和其他第三方库的源代码文件。【Lib下面的site-packages…

PID算法原理分析及优化

今天为大家介绍一下经典控制算法之一的PID控制方法。PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。 在大学期间,参加的智能汽车竞赛中就使用到了PI…

Word文档密码设置:Python设置、更改及移除Word文档密码

给Word文档设置打开密码是常见的Word文档加密方式。为Word文档设置打开密码后,在打开该文档时,需要输入密码才能预览及编辑,为Word文档中的信息提供了有力的安全保障。如果我们需要对大量的Word文档进行加密、解密处理,Python是一…

Python对象类型判断与函数重载

1. 判断对象类型 通过type函数可以知道对象的类型,示例代码如下: x Hello s type(x) print s x Hello s type(x) print s 2. 函数重载 在写函数时,时常遇到需要应付不同的参数类型以及不同的参数数量的情况。 在C中,通常定义多…