PyQt学习记录01——加法计算器

0. 安装配置

0.1 安装相关库

首先打开你的PyCharm程序,然后新建一个目录用于学习,其次在terminal中输入

pip install pyqt5

如果你不具有科学上网能力,请改为国内源

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

请添加图片描述
然后安装pyqt相关工具

pip install pyqt5-tools

0.2 配置qtdesigner

在文件——》设置——》工具——》外部工具中进行配置(默认外部工具是没有的,这是编辑完成的,我这里是因为编辑过了)
请添加图片描述
点击+号图标,在弹出的界面中按照如下进行配置,其中Program栏填写的地址需要你事先查找PC找到,复制进来,然后打开指定路径,找到下面的designer.exe,最后输入工作地址 点击确认即可。
请添加图片描述
在你的项目文件夹上点击右键,找到External Tools——》qtdesigner
请添加图片描述
最后出现QT设计界面说明配置完成
请添加图片描述

0.3 配置pyuic

这个外部工具的主要目的是将Qt设计师的ui界面转译为py文件,配置方法有0.2相同。
找到\Scripts\pyuic5.exe并确定
需要注意的是工作地址最好和qtdesigner所配置的地址一致
其中Arguments填写

$FileName$ -o $FileNameWithoutExtension$.py -x

请添加图片描述
最后,首先使用qt设计师(ui界面创建一个窗口,并保存),这样会在你的文件路径下显示为xxx.ui文件

接着对这个文件右键,选择External Tools——》pyuic,查看其是否能生成xxx.py文件
其中xxx.py文件就是转译的ui所包含的控件等文件,此时点击运行xxx.py就可以弹出你所编辑的ui界面
请添加图片描述

1. 开发流程

相信聪明的你已经注意到了,pyqt的开发流程与原生QT开发流程是略有区别的,最大的区别莫过于使用pyuic转译的流程,这就使得你无法像原生QT开发那样,可以快速在UI界面和代码界面中进行切换,而是需要转译。

这样导致的问题就是你不能在xxx.ui转译的xxx.py文件中创建事件和代码,因为只要ui改动并转译了,就会导致你的代码被全部覆盖,所以我们需要新建一个py文件,来调用xxx.py中的元素。

所以开发流程就是:
新建一个xxx.ui文件——》编辑xxx.ui——》保存——》通过pyuic转译xxx.ui文件——》获得xxx.py——》新建run_xxx.py文件构建你的代码用以调用xxx.py中的元素——》调试/运行run_xxx.py文件

首先、新建一个ui界面,这里的红框是因为采用了QT设计师右键菜单的布局功能
请添加图片描述
然后将保存的xxx.ui文件转译为xxx.py文件(这里需要注意pyuic配置时的路径需要与你当前的ui文件一致,不然可能找不到)

而后,在当前文件目录下新建,并且可命名为run_xxx.py,输入以下代码,

import sys
from PyQt5 import QtWidgets
from xxx import Ui_MainWindow  # 导入 xxx.py 里的 UI 类class MainApp(QtWidgets.QMainWindow):def __init__(self):super().__init__()self.ui = Ui_MainWindow()  # 创建 UI 实例self.ui.setupUi(self)  # 设置 UIself.ui.pushButton.clicked.connect(self.on_button_click)  # 绑定按钮事件def on_button_click(self):""" 按钮1点击事件 """try:# 获取用户输入line1 = int(self.ui.lineEdit.text())  # 获取第一个编辑栏数值line2 = int(self.ui.lineEdit_2.text())  # 获取第二个编辑栏数值line3 = line1 + line2  # 进行求和计算# 显示计算结果self.ui.lineEdit_3.setText(str(line3))except ValueError:self.ui.lineEdit_3.setText("输入错误")if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)window = MainApp()window.show()sys.exit(app.exec_())

右键运行这个程序,在line1和line2分别输入2、5之后,按下PushButton按钮,可以看到line3输出了7,程序可以正常运行
请添加图片描述
自此,一个简单的pyqt程序就开发完成了。

2. 打包exe文件

2.1 通过PyCharm打包单文件exe

在完成了pyqt项目后,打包exe可以使用pyinstaller进行打包,一样的我们在PyCharm项目的Terminal中输入安装对应的库

pip install pyinstaller

安装完成后,确认打包的文件(这里是run_xxx.py)
(下一步之前要提前关闭杀毒软件,大概率会出现误报导致打包不成功,往后不再赘述)
然后在Terminal中输入

pyinstaller -F .\run_xxx.py

最终打包生成的exe文件就在工作目录的dist\run_xxx文件中。
这时所打包的exe文件可以直接拷贝使用,打包程序已经将所有的依赖文件压缩到了exe文件中。

2.2 通过PyCharm打包单个文件夹

如果你想输出文件夹(一般大文件时选择该类命令),则使用这个命令方式即可,然后拷贝dist文件夹才可以在其他PC使用

pyinstaller -D .\run_xxx.py

2.3 通过文件目录打包

因为不在pycharm中进行打包,缺少相关依赖的你就需要使用CMD命令,在全局安装pyqt5和pyinstaller两个依赖,然后在需要打包的文件夹路径(即:包含xxx.ui、xxx.py、run_xxx.py)下,按住Shift,同时点击右键菜单,你会从中找到(在此处打开Powershell窗口),然后再控制台中安装一样的方式进行打包即可。

如果双击后出现闪退(太快看不清楚错误原因),说明打包出现了问题。 为了知道具体原因: 需要在powershell的cmd中运行这个exe。

3. 参考资料

手把手教你将pyqt程序打包成exe(1)
手把手教你将pyqt程序打包成exe(2)
Python pyinstaller打包exe最完整教程

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

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

相关文章

[Linux] 信号(singal)详解(二):信号管理的三张表、如何使用coredump文件、OS的用户态和内核态、如何理解系统调用?

标题:[Linux] 信号管理的三张表、如何使用coredump文件、OS的用户态和内核态、如何理解系统调用? 水墨不写bug (图片来源:文心一言) 正文开始: 目录 一、信号管理的三张表 (1)三张表…

2025.2.11

1> 制作一个闹钟软件 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QTime> #include <QTimer> #include <QTimeEdit> #include <QDa…

和鲸科技上线 DeepSeek 系列模型服务,助力数智企业 AI 业务创新!

近日&#xff0c;和鲸科技团队宣布旗下数据科学协同平台 ModelWhale 实现对 DeepSeek 全系列大模型的深度支持&#xff0c;旨在帮助更多数智化转型企业提供从算力基建到业务融合的全栈式解决方案&#xff0c;快速搭建自主可控的云端智能服务体系&#xff0c;实现大模型与业务系…

使用亚马逊针对 PyTorch 和 MinIO 的 S3 连接器进行模型检查点处理

2023 年 11 月&#xff0c;Amazon 宣布推出适用于 PyTorch 的 S3 连接器。适用于 PyTorch 的 Amazon S3 连接器提供了专为 S3 对象存储构建的 PyTorch 数据集基元&#xff08;数据集和数据加载器&#xff09;的实现。它支持用于随机数据访问模式的地图样式数据集和用于流式处理…

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发(文末联系,整套资料提供)

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发 一、系统介绍 随着人们生活水平的提高和健康意识的增强&#xff0c;智能健康监测设备越来越受到关注。智能腰带作为一种新型的健康监测设备&#xff0c;能够实时采集用户的腰部健康数据&#xff0c;如姿势、运动…

【cocos creator】拖拽排序列表

DEMO下载 GameCtrl.ts import ItemCtrl from "./ItemCtrl";const { ccclass, property } cc._decorator;ccclass export default class GameCtrl extends cc.Component {property(cc.Node)content: cc.Node null;property(cc.Node)prefab: cc.Node null;arr []…

Vision Transformer:打破CNN垄断,全局注意力机制重塑计算机视觉范式

目录 引言 一、ViT模型的起源和历史 二、什么是ViT&#xff1f; 图像处理流程 图像切分 展平与线性映射 位置编码 Transformer编码器 分类头&#xff08;Classification Head&#xff09; 自注意力机制 注意力图 三、Coovally AI模型训练与应用平台 四、ViT与图像…

国产编辑器EverEdit - 编辑辅助功能介绍

1 编辑辅助功能 1.1 各编辑辅助选项说明 1.1.1 行号 打开该选项时&#xff0c;在编辑器主窗口左侧显示行号&#xff0c;如下图所示&#xff1a; 1.1.2 文档地图 打开该选项时&#xff0c;在编辑器主窗口右侧靠近垂直滚动条的地方显示代码的缩略图&#xff0c;如下图所示&…

Spring AI 介绍

文章来源&#xff1a;AI 概念 (AI Concepts) _ Spring AI1.0.0-SNAPSHOT中文文档(官方文档中文翻译)|Spring 教程 —— CADN开发者文档中心 本节介绍 Spring AI 使用的核心概念。我们建议仔细阅读它&#xff0c;以了解 Spring AI 是如何实现的。 模型 AI 模型是旨在处理和生成…

Spring MVC 拦截器(Interceptor)与过滤器(Filter)的区别?

1、两者概述 拦截器&#xff08;Interceptor&#xff09;&#xff1a; 只会拦截那些被 Controller 或 RestController 标注的类中的方法处理的请求&#xff0c;也就是那些由 Spring MVC 调度的请求。过滤器&#xff08;Filter&#xff09;&#xff1a; 会拦截所有类型的 HTTP …

qt QCommandLineOption 详解

1、概述 QCommandLineOption类是Qt框架中用于解析命令行参数的类。它提供了一种方便的方式来定义和解析命令行选项&#xff0c;并且可以与QCommandLineParser类一起使用&#xff0c;以便在应用程序中轻松处理命令行参数。通过QCommandLineOption类&#xff0c;开发者可以更便捷…

Flink KafkaConsumer offset是如何提交的

一、fllink 内部配置 client.id.prefix&#xff0c;指定用于 Kafka Consumer 的客户端 ID 前缀partition.discovery.interval.ms&#xff0c;定义 Kafka Source 检查新分区的时间间隔。 请参阅下面的动态分区检查一节register.consumer.metrics 指定是否在 Flink 中注册 Kafka…

从Word里面用VBA调用NVIDIA的免费DeepSeekR1

看上去能用而已。 选中的文字作为输入&#xff0c;运行对应的宏即可&#xff1b;会先MSGBOX提示一下&#xff0c;然后相关内容追加到word文档中。 需要自己注册生成好用的apikey Option ExplicitSub DeepSeek()Dim selectedText As StringDim apiKey As StringDim response A…

网络工程师 (29)CSMA/CD协议

前言 CSMA/CD协议&#xff0c;即载波监听多路访问/碰撞检测&#xff08;Carrier Sense Multiple Access with Collision Detection&#xff09;协议&#xff0c;是一种在计算机网络中&#xff0c;特别是在以太网环境下&#xff0c;用于管理多个设备共享同一物理传输介质的重要…

WPS中如何批量上下居中对齐word表格中的所有文字

大家好&#xff0c;我是小鱼。 在日常制作Word表格时&#xff0c;经常需要对表格中的内容进行排版。经常会把文字设置成左对齐、居中对齐或者是右对齐&#xff0c;这些对齐方式都比较好设置&#xff0c;有时制作的表格需要把文字批量上下居中对齐&#xff0c;轻松几步就可以搞…

GeekPad智慧屏编程控制

前面通过homeassistant和emqx一番折腾&#xff0c;已经可以控制GeekPad智慧屏的开关了。但是这中间用到的软件对环境依赖非常高&#xff0c;想再优化一下&#xff0c;把这两个工具都装到手机上&#xff0c;最后勉强实现了&#xff0c;但是还得借用模拟器和容器&#xff0c;稳定…

【DeepSeek】在本地计算机上部署DeepSeek-R1大模型实战(完整版)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能&#xff08;AI&#xff09;通过算法模拟人类智能&#xff0c;利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络&#xff08;如ChatGPT&…

可编程网卡芯片在京东云网络的应用实践【BGW边界网关篇】

目录导览 文章背景 一.网关问题分析 BGW专线网关机器运维变更困难 BGW专线网关故障收敛链路复杂且长 BGW专线网关不具备异构架构下的灾备能力 BGW专线网关硬件资源成本居高不下 二.技术方案设计实现 网络拓扑规划与VIP架构升级 硬件实现与N-Tb流量平滑迁移 三.落地…

接口测试Day12-持续集成、git简介和安装、Gitee远程仓库、jenkins集成

持续集成 概念&#xff1a; 团队成员将自己的工作成果&#xff0c;持续集成到一个公共平台的过程。成员可以每天集成一次&#xff0c;也可以一天集成多 次。 相关工具&#xff1a; 本地代码管理&#xff1a;git远程代码管理&#xff1a;gitee(国内)、github(国外)、gitlib(公司…

前端快速生成接口方法

大家好&#xff0c;我是苏麟&#xff0c;今天聊一下OpenApi。 官网 &#xff1a; umijs/openapi - npm 安装命令 npm i --save-dev umijs/openapi 在根目录&#xff08;项目目录下&#xff09;创建文件 openapi.config.js import { generateService } from umijs/openapi// 自…