Python 开发图形界面程序

news2024/11/26 8:58:34

用 Python 语言开发图形界面的程序,有2种选择:

  • Tkinter

    基于Tk的Python库,这是Python官方采用的标准库,优点是作为Python标准库、稳定、发布程序较小,缺点是控件相对较少。

  • PySide2/PySide6

    基于Qt 的Python库,优点是控件比较丰富、跨平台体验好、文档完善、用户多。

    缺点是 库比较大,发布出来的程序比较大。

如果是开发小工具,界面比较简单,可以采用Tkinter。
如果是发布功能比较多的正式产品,采用基于Qt的 PySide2/PySide6 。

本文介绍的是使用 PySide2 开发Python程序的图形界面。

安装 PySide2

pip install pyside2

也可以指定国内的安装源,下载速度更快。

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

Python 3.11 不能安装 PySide2,可以安装PySide6;
如果要安装 PySide2,只能使用 Python 3.10 或者更早的 Python版本。

PySide2官方文档 https://doc.qt.io/archives/qtforpython-5.12/PySide2/QtWidgets/index.html#module-PySide2.QtWidgets

一、PySide2安装完成后,在python安装目录下Scripts文件夹,运行pyside2-designer.exe进入图形设计。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
保存图形界面生成 login.ui 文件(前缀可以自定义)

二、把 .ui 文件转换成 .py 文件供python程序调用

执行命令: pyside2-uic login.ui > login_ui.py
把UI文件转化为包含界面定义的Python代码文件,具体步骤如下:

  1. 把login.ui文件复制到python目录Scripts文件夹,在空白处按着shift + 右击鼠标,选择【在此处打开命令窗口】。
    在这里插入图片描述

在这里插入图片描述

  1. 运行命令后没有报错,说明正确生成了py文件。
    在这里插入图片描述
  2. 把login_ui.py文件复制到python项目以方便调用。
    在这里插入图片描述

三、调用login_ui.py 以及编写逻辑代码

import sys
from PySide2.QtWidgets import QApplication, QMainWindow
# 导入login_ui.py 文件 Ui_MainWindow 类
from login_ui import Ui_MainWindow

# 注意 这里选择的父类 要和你UI文件窗体一样的类型
# 主窗口是 QMainWindow, 表单是 QWidget, 对话框是 QDialog
class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        # 使用ui文件导入定义界面类
        self.ui = Ui_MainWindow()
        # 初始化界面
        self.ui.setupUi(self)
        # 调用自定义方法
        self.ui.pushButton_login.clicked.connect(self.handleCalc)
        self.ui.pushButton_exit.clicked.connect(self.eixtSys)

    def handleCalc(self):
        # 利用lineEdit控件对象text()函数获取界面输入
        username = self.ui.lineEdit_user.text()
        password = self.ui.lineEdit_pwd.text()
        # 利用textEdit控件对象setText()函数设置界面显示
        self.ui.textEdit_list.setText("登录成功!\n" + "用户名是: " + username + "\n密码是: " + password)

    def eixtSys(self):
        sys.exit()


app = QApplication([])
mainw = MainWindow()
# 将窗口控件显示在屏幕上
mainw.show()
# 程序运行,sys.exit方法确保程序完整退出。
sys.exit(app.exec_())

在这里插入图片描述
在这里插入图片描述
运行代码
在这里插入图片描述
在这里插入图片描述

四、使用Pyinstaller转换.py文件为.exe可执行程序

pyinstaller其实就是把python解释器和脚本打包成一个可执行文件,和编译成真正的机器码是完全两回事。所以打包不一定会提高运行效率,可能会降低运行效率,但是好处是在运行者机器上不用安装python和脚本所依赖的库。

输入指定的脚本后,首先pyinstaller会分析该脚本所依赖的其他依赖,然后进行查找、复制,把所有相关的依赖都收集起来并惊醒加密处理,包括python解释器,最后把这些文件放在一个目录下,或者打包到一个可执行文件。然后就可以直接运行所生成的可执行文件。

使用pyinstaller打包生成的可执行文件,只能在和打包机器系统相同的环境下运行。32位python环境打包的程序可以运行在32/64位windows系统上。64位python环境打包的程序只能运行在64位windows系统上。所以如果想打包程序的话,建议使用32位python环境打包。

注意事项
1、待转换的.py文件绝对路径最好不要包含中文字符,不然容易出现一些莫名其妙的问题。
2、python中需要有.py文件中用到的第三方库。否则在转换后的.exe文件中会出现不符合预期的结果。

安装pyinstaller库,打开cmd命令行窗口,输入:pip install pyinstaller

在这里插入图片描述
where pyinstaller 命令查看安装路径
在这里插入图片描述
在项目内打开CMD ,运行命令 pyinstaller -F QT2.py -w
在这里插入图片描述

可执行文件在 dist 目录
在这里插入图片描述

pyinstaller 实例说明

pyinstaller -F myScript.py -w

参数区分大小写

-F 表示生成单个可执行文件,常用。
-w 小写 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
-p 小写 表示你自己自定义需要加载的类路径,一般情况下用不到。
-i 表示可执行文件的图标。注意:图片后缀必须是.ico-c,console,-nowindowed:使用控制台,无窗口(默认)
-D 创建一个目录,包含EXE文件,但会依赖很多文件(默认选项)。

使用问题:
1、如果Python脚本使用到了第三方库,如何打包?

 方法一:将第三方库对应的包复制到待打包python脚本的同目录下,再执行打包命令。
 方法二:pyinstaller -F  路径\文件名.py 路径\文件名.py 

2、我的python脚本主要是命令行输出,但是程序执行完就退出无法查看相关信息,如何处理?

在python脚本最后一行添加命令:
os.system('pause') 或者 raw_input('Press enter any key to exit...')

3、 我想给我的打包后的执行程序换个图标,如何处理?

  使用参数-i :  pyinstaller -F -i tupian\qq.ico myScript.py 
  图标文件后缀名必须是.ico

4、程序运行出现CMD窗口,如何去除?

  带上参数-w : pyinstaller -F myScript -w 

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

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

相关文章

玩家至上:竞技游戏设计如何满足现代玩家的需求?

文章目录 一、现代玩家需求分析二、以玩家体验为核心的游戏设计三、个性化与定制化服务四、强化社交互动与社区建设五、持续更新与优化《游戏力:竞技游戏设计实战教程》亮点编辑推荐内容简介目录获取方式 随着科技的飞速发展和游戏产业的不断壮大,现代玩…

软件测试之Web自动化测试

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、自动化测试基本介绍 1、自动化测试概述: 什么…

Android布局优化之include、merge、ViewStub的使用,7年老Android一次坑爹的面试经历

前言 开发10年,老码农,曾经是爱奇艺架构 点击领取完整开源项目《安卓学习笔记总结最新移动架构视频大厂安卓面试真题项目实战源码讲义》 师,东芝集团高级工程师,三星架构师。5年之内频繁被辞退。内心拔凉拔凉的,在这五…

Android大厂高级面试题灵魂100问,带你彻底弄明白

“2020年技术没有成长,我今年一定要好好努力学习!” “在现在这个公司都工作了3年了,一毛钱工资都没有涨…” “年前真倒霉,老板嫌我工资高,被优化了,年后又遇到了疫情,现在都还没有找到合适的工…

141.乐理基础-男声女声音域、模唱、记谱与实际音高等若干问题说明

上一个内容:140.乐理基础-音程的转位-CSDN博客 上一个内容练习的答案:红色箭头指向的是转为,比如第一个只要写成c低g高都是正确的,不一定非要和图中一样 首先在 12.音域、1C到底是那一组的C 里面写了人声的音域,大致默…

最强照片AI无损放大工具

使用人工智能的能力来放大图像,同时为惊人的结果添加自然的细节。 使用深度学习技术,A.I.GigaPixEL可以放大图像并填满其他调整大小的产品所遗漏的细节。 下载地址:最强照片AI无损放大工具.zip

dolphinscheduler试用(一)(边用边修bug。。。。create tenant error)

(作者:陈玓玏) 前提:部署好了dolphinscheduler,部署篇见https://blog.csdn.net/weixin_39750084/article/details/136306890?spm1001.2014.3001.5501 官方文档见:https://dolphinscheduler.apache.org/…

MyBatis操作数据库(SQL注入)

本文主要来讲解6大标签&#xff0c;以便更好的MyBatis操作数据库&#xff01; <if>标签<trim>标签<where>标签<set>标签<foreach>标签<include>标签 前提需求&#xff1a; MyBatis是一个持久层框架&#xff0c;和Spring没有任何关系&…

【LeetCode】升级打怪之路 Day 14:二叉树的遍历

今日题目&#xff1a; 144. 二叉树的前序遍历94. 二叉树的中序遍历145. 二叉树的后序遍历102. 二叉树的层序遍历107. 二叉树的层序遍历 II199. 二叉树的右视图637. 二叉树的层平均值429. N 叉树的层序遍历515. 在每个树行中找最大值116. 填充每个节点的下一个右侧节点指针117. …

Fiddler入门:下载、安装、配置、抓包、customize rules

一、fiddler下载安装 安装包下载链接&#xff1a;https://www.telerik.com/download/fiddler 随便选个用途&#xff0c;填写邮箱&#xff0c;地区选择China&#xff0c;勾选“I accept the Fiddler End User License Agreement”&#xff0c;点击“DownLoad for windows”&…

⭐每天一道leetcode:28.找出字符串中第一个匹配项的下标(简单;暴力解;KMP算法,有难度)

⭐今日份题目 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例1 输入&#xff1a;haystack &q…

3.6作业

作业要求&#xff1a;数据库操作的增、删、改 程序代码&#xff1a; #include<myhead.h> int main(int argc, const char *argv[]) {//定义数据库句柄指针sqlite3 * ppDb NULL;//打开数据库&#xff0c;如果数据库不存在&#xff0c;则创建数据库//将数据库句柄由参数…

移动开发:图像查看器

一、新建ImageViewer模块&#xff0c;添加p1-p9图片(注意mdpi后缀) 二、相关代码 1.MainActivity.java文件代码 package com.example.imageviewer;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.view.MotionEvent; import and…

Jacob使用教程--通过宏来寻找变量名

说明: 这里做个随比,参考资料请见前面的系列文章 问题展示: 对于一个操作,当我们不知道怎么利用jacob写代码时,而且网上也找不到,可以按照如下操作: 比如,我们要删除 word中的文本框 我们根本不知道文本框,这个变量叫什么,在Microsoft文档哪个父目录下面, 可以通过…

【MySQL】事务?隔离级别?锁?详解MySQL并发控制机制

目录 1.先理清一下概念 2.锁 2.1.分类 2.2.表锁 2.3.行锁&#xff08;MVCC&#xff09; 2.4.间隙锁 2.5.行锁变表锁 2.6.强制锁行 1.先理清一下概念 所谓并发控制指的是在对数据库进行并发操作时如何保证数据的一致性和正确性。在数据库中与并发控制相关的概念有如下几…

测试遍历1e5,1e8数组耗时

1e8大概0.38秒&#xff0c;即380ms 1e5耗时1ms左右&#xff1a; 代码使用方式来自&#xff1a;clock - C Reference (cplusplus.com)

MicroPython ADX51x读取ID和ADC值

from machine import Pin, SoftSPI import timedef ID(agreement):#txbuf 需要将16进制转换为10进制rxbuf bytearray(3) # create a bufferspi SoftSPI(baudrate200000, polarity1, phase0, mosiPin(16), misoPin(4), sckPin(2))spi.init(baudrate125000) # set the bau…

【前端系列】vue

这里写目录标题 一、Vue简介1.1 主流前端框架/库简介 二、下载和安装Vue2.1 下载2.2 安装完成后&#xff0c;检查2.3创建全局安装目录和缓存日志目录2.4 为了下载包快速&#xff0c;改源为淘宝镜像2.5 查看npm配置修改是否成功 三、配置环境变量环境变量—用户变量—选中Path—…

(C语言)深入理解指针1基础

指针是C语言中的一个难点&#xff0c;但如果真正理解了指针&#xff0c;其实没有很难&#xff0c;本篇文章介绍了指针的基础知识&#xff0c;后面还会继续更行指针的内容。感谢支持。 目录 1. 内存和地址 1.1 内存 1.2 究竟该如何理解编址 2. 指针变量和地址 2.1 取地址操…

Midjourney是个什么软件?midjourney订阅教程

数字时代&#xff0c;AI的应用正在不断推动各个领域的发展。其中&#xff0c;AI在艺术和设计领域的运用引起了广泛的关注。作为一款爆火的AI绘画软件&#xff0c;Midjourney通过其独特的原理和便捷的使用方法&#xff0c;为创作者提供了一个创作逼真绘画作品的全新平台 1、AI绘…