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.mzph.cn/news/762797.shtml

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

相关文章

python --- 练习题3

目录 1、猜数字游戏(使用random模块完成) :继上期题目,附加 2、用户登录注册案例 3、求50~150之间的质数是那些? 4、打印输出标准水仙花数,输出这些水仙花数 5、验证:任意一个大于9的整数减去它的各位…

Blender小:图片转mesh,并展UV

其实就这么一个插件:Image2Mesh https://github.com/kedepot/i2m-std blender加载完图片之后点这个就行 到了这一步还不行如果直接放到unity中使用的话,添加材质和贴图之后每一个小块都是独立的区域来展示贴图,所以需要展UV

蓝牙HFP协议推荐的语音丢包补偿算法浮点实现的定点化

最近在做蓝牙的宽带语音通话。相对于蓝牙窄带语音,主要变化是把采样率从8k变到16k,以及编解码器从CVSD变成mSBC(modified SBC,改进的SBC)等。蓝牙语音通话相关的HFP(Hand Free Profile)强烈建议…

【随笔】Git -- 解决提交时本地与目标分支不一致导致提交失败(三)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

高标准农业四情监测系统的应用范围

高标准农业四情监测系统的应用范围【TH-Q1】随着科技的不断进步,高标准农业四情监测系统已经逐渐成为现代农业的重要组成部分。这一系统能够实时监测土壤、气候、作物生长和病虫害情况,为农业生产提供精准的数据支持,从而提高农作物的产量和质…

武汉星起航引领跨境电商新潮流,一站式孵化平台助力合作伙伴腾飞

在全球经济一体化的大趋势下,跨境电商以其独特的优势逐渐成为连接各国市场的桥梁。随着市场竞争的加剧,传统的经营模式已难以满足日益复杂的业务需求,合作伙伴迫切需要更为全面、专业的指导和支持。正是在这样的背景下,武汉星起航…

读天下杂志读天下杂志社读天下编辑部2023年第51期目录

阅读星光 满树桃花开,桃李报恩来 (1) 曹万花 困境中求生,逆境中发展——《鲁滨孙漂流记》阅读感悟 (4) 车宝江 《诗经》对我国传统意境论的深化 (7) 成卓华、 《读天下》投稿:cn7kantougao163.com 英美文学作品翻译中的不对等性…

AJAX-Promise

定义 Promise对象用于表示(管理)一个异步操作的最终完成(或失败)及其结果值。 好处:1)成功和失败状态,可以关联对应处理程序 2)了解axios函数内部运作机制 3)能解决回调函数地狱问题 语法&…

[HackMyVM]靶场 Liceo

kali:192.168.56.104 靶机:192.168.56.124 端口扫描 nmap 192.168.56.124 # nmap 192.168.56.124 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-22 10:56 CST Nmap scan report for 192.168.56.124 Host is up (0.000095s latency). Not shown: 997 closed…

SAP-MM-设置字段默认值

当我们创建订单时,有些字段总是重复输入,每次值也是固定的,例如生产订单 如上图“生产工厂都是1000”如何设置成默认每次进入都是1000呢? 点击字段,F1 查看参数ID“WRK” 输入tcode:SU3 按上图维护数据100…

【云呐】设备固定资产管理系统怎么使用,有哪些功能

不同的软件和实际应用场景可能会使用设备固定资产管理系统软件。一般而言,这个软件通常包括以下功能:  用户管理:系统可以创建实时跟踪不同的用户和用户组,并设置不同的权限和访问级别。  权限设置:根据权限设置功…

c语言基础笔记(1)进制转换以及++a,a++,取地址和解引用

一进制转换 OCT - 八进制 DEC - 十进制 HEX - 十六进制 0520&#xff0c;表示八进制 0x520表示16进制 unsigned 无符号&#xff0c;只有正的 signed 有正有负数 char默认是signed 类型 #include <stdio.h>int main(void) { //字符转换成数字char a 5;int a1 a- 4…

SW工具下没有URDF

解决方案&#xff0c;下载

flask之ssti [WesternCTF2018]shrine1

打开题目 整理一下&#xff0c;代码: import flask import osapp flask.Flask(__name__) app.config[FLAG] os.environ.pop(FLAG) app.route(/)def index():return open(__file__).read()app.route(/shrine/)def shrine(shrine):def safe_jinja(s):s s.replace((, ).replac…

二、Web3 学习(区块链)

区块链基础知识 一、基础知识1. 区块链可以做什么&#xff1f;2. 区块链的三个特点 二、区块链的类型概括1. PoW2. PoS3. 私有链和联盟链 三、智能合约1. 什么是智能合约2. 如何使用智能合约 四、困境1. 三难选择的基本要素2. 这真的是一个三难选择吗? 五、比特币1. 什么是比特…

JVM面试篇

面试篇就是复习前面学的 什么是JVM 1.定义&#xff1a;JVM指的是Java虚拟机&#xff0c;本质是一个运行在计算机上的程序 2.作用&#xff1a;为了支持Java中Write Once &#xff0c;Run Anywhere 编写一次 到处运行的跨平台特性 功能&#xff1a; 1.解释和运行 2.内存管理…

《深入解析 C#》—— C# 3 部分

文章目录 第三章 C#3&#xff1a;LINQ及相关特性3.1 自动实现属性&#xff08;*&#xff09;3.2 隐式类型 var&#xff08;*&#xff09;3.3 对象和集合初始化3.3.1 对象初始化器3.3.2 集合初始化器 3.4 匿名类型3.4.1 基本语法和行为3.4.2 编译器生成类型3.4.3 匿名类型的局限…

【复杂网络建模】——建模工具Matlab入门

目录 一、认识MATLAB 二、认识工具箱 三、基本操作和函数 3.1 算术操作符 3.2 数学函数 3.3 矩阵操作 3.4 索引和切片 3.5 逻辑操作 3.6 控制流程 3.7 数据输入输出 四、变量和数据类型 4.1 数值类型 4.2 整型 4.3 复数 4.4 字符串 4.5 逻辑类型 4.6 结构体&a…

【数据结构】顺序表的实现

文章目录 **线性表(linear)&#xff1a;****顺序表****下列是需要实现的接口(Seqlist.h)****顺序表的初始化****顺序表的插入数据****顺序表的扩容(为插入数据提供保障)****顺序表的尾插****顺序表的头插****顺序表的删除数据****顺序表的尾删****顺序表的头删****查找指定位置…

SpringBoot+Redis实现分布式WebSocket

什么是分布式WebSocket&#xff1f; 是指在分布式系统架构中实现WebSocket的通信机制&#xff0c;它允许在不同的服务器节点之间共享和同步WebSocket会话状态&#xff0c;从而实现跨多个服务器的实时消息传递。 在分布式环境中实现WebSocket的挑战主要包括以下几点&#xff1a…