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

使用Tesseract识别中文 并提高精度

1. 使用中文训练数据 在使用pytesseract进行中文文本识别时,确保安装了中文的训练数据文件。在Tesseract的安装目录下的tessdata文件夹中应包含一个名为chi_sim.traineddata(简体中文)或chi_tra.traineddata(繁体中文&#xff09…

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

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

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

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

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

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

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

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

使用go将http升级为websocket的代码

package mainimport ("fmt""github.com/gorilla/websocket""log""net/http" )// 我们去定义一个 Upgrader // 这需要一个 Read 和 Write 的缓冲大小 var upgrader websocket.Upgrader{ReadBufferSize: 1024,WriteBufferSize: 1024,/…

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

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

SCI论文发表很容易【1】:论文投稿

下面总结了SCI写作完成后投稿所需要的所用文件和模板 1.1 投稿:外文期刊投稿状态 (1)Submitted to Journal: 当上传结束后,显示的状态是Submitted to Journal,这个状态是自然形成的无需处理。 (2)With editor 如果在投稿的时候没有要求选择编辑,就先到主编那里,主…

AJAX-Promise

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

1179: 判断回文数(python)

收藏 难度:一般 标签:暂无标签 题目描述 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同 输入 多组数据,每组数据仅含一个5位数 输出 Yes 或者 No 表示该数是否为回…

[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.内存管理…