当前位置: 首页 > news >正文

用pyside6创建一个界面并实现一个小功能且能打包成问题记录

在这里插入图片描述
现在我们要开发一个程序,让用户输入一段文本包含:员工姓名、薪资、年龄。该程序可以把薪资在 2万 以上、以下的人员名单分别打印出来。

1用designer创建界面并生成UI文件;

2直接调用ui文件实现功能;

from PySide6.QtWidgets import QApplication, QMessageBox
from PySide6.QtUiTools import QUiLoader

uiLoader = QUiLoader()
class Stats:

    def __init__(self):
        # 从文件中加载UI定义

        # 从 UI 定义中动态 创建一个相应的窗口对象
        # 注意:里面的控件对象也成为窗口对象的属性了
        # 比如 self.ui.button , self.ui.textEdit
        self.ui = QUiLoader().load('hello.ui')

        self.ui.pushButton.clicked.connect(self.handleCalc)

    def handleCalc(self):
        info = self.ui.textEdit.toPlainText()

        salary_above_20k = ''
        salary_below_20k = ''
        for line in info.splitlines():
            if not line.strip():
                continue
            parts = line.split(' ')

            parts = [p for p in parts if p]
            name,salary,age = parts
            if int(salary) >= 20000:
                salary_above_20k += name + '\n'
            else:
                salary_below_20k += name + '\n'

        QMessageBox.about(self.ui,
                    '统计结果',
                    f'''薪资20000 以上的有:\n{salary_above_20k}
                    \n薪资20000 以下的有:\n{salary_below_20k}'''
                    )

app = QApplication([])
stats = Stats()
stats.ui.show()
app.exec()

3转为py文件调用

在pycharm中用全命令,避免配置方式导致的不能调用的问题:

C:\Users\.conda\envs\occsource\Scripts\pyside6-uic.exe hello.ui -o helloui.py
import sys
from PySide6.QtWidgets import QApplication, QWidget,QMessageBox
from helloui import Ui_Form  # 替换为你的文件名

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.handleCalc)

    def handleCalc(self):
        info = self.ui.textEdit.toPlainText()

        salary_above_20k = ''
        salary_below_20k = ''
        for line in info.splitlines():
            if not line.strip():
                continue
            parts = line.split(' ')

            parts = [p for p in parts if p]
            name,salary,age = parts
            if int(salary) >= 20000:
                salary_above_20k += name + '\n'
            else:
                salary_below_20k += name + '\n'

        QMessageBox.about(self,
                    '统计结果',
                    f'''薪资20000 以上的有:\n{salary_above_20k}
                    \n薪资20000 以下的有:\n{salary_below_20k}'''
                    )

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

4打包

需要安装pyinstaller:
在pycharm中收缩找到pyinstaller,安装就行;

由于没有在环境中指定pyinstall,可以切换到控制台,用全安装路径调用(记得把ui文件和生成的spec文件拷过去:

C:\Users\zhangpp-b\.conda\envs\occsource\Scripts\pyinstaller.exe 调用ui.py --noconsole

其中

–noconsole 指定不要命令行窗口,否则我们的程序运行的时候,还会多一个黑窗口。 但是我建议大家可以先去掉这个参数,等确定运行成功后,再加上参数重新制作exe。因为这个黑窗口可以显示出程序的报错,这样我们容易找到问题的线索。
在这里插入图片描述
在这里插入图片描述

相关文章:

  • ${sym} 与 String(sym) 的区别
  • 《昇腾推理服务器+DeepSeek大模型》技术培训在图为科技成功举办
  • ubuntu终端指令集 shell编程基础(一)
  • 20.<Spring图书管理系统①(登录+添加图书)>
  • 什么是FPGA?
  • 代码随想录算法训练营第十一天| 150. 逆波兰表达式求值,239. 滑动窗口最大值
  • 26.贪心算法4
  • Vue 路由基础:Vue 2 和 Vue 3 的比较与使用
  • APP自动化实战
  • c++ 三维图形 R树的简单应用案例
  • 鸿蒙5.0实战案例:基于RichEditor的评论编辑
  • 鸿道Intewell操作系统的Linux实时拓展方案
  • 组态软件在物联网中的应用
  • TFChat:腾讯大模型知识引擎(DeepSeek R1)+飞书机器人实现AI智能助手
  • Java中的缓存技术:Guava Cache vs Caffeine vs Redis
  • w803|联盛德|WM IoT SDK2.X测试|window11|VSCODE|(4):IDE配置
  • Spark内存迭代计算
  • .Net 9下使用Tensorflow.net---DNN_Eager
  • RabbitMQ死信队列
  • 「云原生」「云原生应用的构建与部署」
  • 网站建设排行/百度搜索资源平台token
  • 医院网站建设报价/关键词如何快速排名
  • 网站建设报价单/常见的网络推广方法有哪些
  • 企业网站建设市场报价/网络宣传推广方案范文
  • 企业网站 管理/网络营销期末总结
  • seo顾问是啥/成都seo的方法