如何用python做一个界面,python做一个界面程序

这篇文章主要介绍了用python能不能做出有界面的软件?,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

Source code download: 本文相关源码

1. PySimpleGUI图形界面的制作

我们以Windows系统为例,当我们打开一个记事本,会出现如图所示的界面。如果没有该界面,我们看到的将是一堆代码练手的70个超火python小项目。相比于直接展示代码,这种应用程序不仅使用起来更加便捷,也更利于用户的交互控制。

那么,以图形方式显示计算机的用户操作界面,就是我们所说的用户图形界面(Graphical User Interface),通常简称为GUI

基于此,我们将会为大家介绍如何给Python代码“增加”一个用户图形界面。

2. PySimpleGUI库的介绍与使用

在Python中,用于制作“ 用户图形界面 ” 的库有很多,最常见的像tkinterpyqt5

但是,本次课我们使用的是PySimpleGUI库,之所以使用这个库主要有以下两个重要原因:

  • PySimpleGUI是在上述库之上进行了二次封装,基本可以实现上述模块的所有功能,比如具有常见的按钮、弹窗、滑块、下拉菜单等。

  • PySimpleGUI制作图形界面,布局设计更简单、更人性化,代码量更少。

由于PySimpleGUI属于Python的第三方开源库,因此需要额外安装、导入后,才能使用。

如果你不能使用这个库,请使用如下命令安装这个库。

# 这个是在命令行窗口中执行   pip install PySimpleGUI   

安装完成后,可以使用下方代码测试是否安装成功。

import PySimpleGUI as sg   

当我们安装并导入PySimpleGUI这个库后,只需要5步就可以帮助我们制作一个简单的“用户图形界面”。

3. 牛刀小试:制作一个简单的图形化界面

有了上述基础,我们利用5步法,看如何制作一个简单的图形化界面。

# ① 导入相关库   import PySimpleGUI as sg       # ② 确定行数,定义布局   layout = [       [sg.Text("你的名字叫什么?")],       [sg.Input()],       [sg.Button("确认"),sg.Button("取消")]   ]      # ③ 创建窗口   window = sg.Window(title="made my 黄老师",layout=layout)      # ④ 事件循环   while True:       event,values = window.read()       if event == None:           break       elif event == "确认":           sg.Popup("执行确认任务")       elif event == "取消":           sg.Popup("执行取消任务")      # ⑤ 关闭窗口   window.close()   

在①处,导入 PySimpleGUI 模块,并指定别名为 sg。

在②处,定义窗口布局。参数 layout 是一个列表嵌套,内层包含几个列表就代表窗口有几行,各窗口从上到下依次排列。而同一个内层列表中的控件,即同一行,各控件从左到右依次排列,比如第 3 行的“确认”和“取消”按钮。

在③处,创建窗口。该方法中包含 title 和 layout 两个参数。其中,title 表示窗口的标题,layout 即上述定义的窗口布局参数。

在④处,定义一个事件循环。常见的表达方式就是 while True+break 组合。其中,event 表示事件,values 表示返回值。

在⑤处,关闭窗口。

4. PySimpleGUI库中的常用概念介绍

这里主要为大家介绍几个有用的概念,这对于我们灵活制作一个“用户图形界面”非常有帮助。

4.1 事件

“事件”指的是前面代码中的event参数。对于界面上的每一个按钮,我们每次单击一下,就会发生一个事件。我们可以依据不同的事件,让程序执行不同的任务。

常见的“事件”分为3种,分别是“窗口关闭事件”、“按钮单击事件”、“其他元素事件”,如下所示 :

  • 窗口关闭事件:窗口关闭按钮是一个特殊的按钮,存在于界面的右上角,即“x”按钮。定义窗口关闭事件是非常重要的。当你忘记定义窗口关闭事件,却单击了窗口右上角的“x”按钮时,它会默默地消耗你所有的 CPU 资源。

  • 按钮单击事件:单击上述的“确认”和“取消”按钮,均会产生按钮单击事件。

  • 其他元素事件 :像文本元素、输入框、下拉菜单等控件的事件属性默认是关闭的。当设置参数enable_events为True时,它们也将具有事件属性。

在上述代码中,假如我们单击“确认”或“取消”按钮,这两个按钮均会产生按钮单击事件,因此会展示出不同的弹窗。

4.2 返回值

“返回值”指的是上述代码中的 values 参数。对于文本输入框,我们往往需要额外输入文字,values 表示的就是用户输入。如果什么都不写,返回值就是空字符串。

对于上述代码,我们稍加改动,这里我们仅仅多了一行print(event,values) 打印代码。

从结果中可以发现,最终返回了一个字典形式的值。因此,我们可以利用“键值对”方式来捕捉键对应的值,即“用户输入”。

4.3 事件属性标识

在上述代码的基础之上,我们再次改动一下代码:

import PySimpleGUI as sg      layout = [       [sg.Text("你的名字叫什么?")],       [sg.Input(key="输入文字")],       [sg.Button("确认",key="ok"),sg.Button("取消",key="cancel")]   ]      window = sg.Window(title="made my 黄老师",layout=layout)      while True:       event,values = window.read()       print(event,values)       if event == None:           break       elif event == "ok":           sg.Popup("执行确认任务")       elif event == "cancel":           sg.Popup("执行取消任务")      window.close()   

这里我们又给 Input() 和 Button() 方法都增加了key参数。再次打印最终的返回值,可以发现原始的键已经被替换成自定义的键。同时原有的事件属性标识也相应地替换为 ok 和 cancel 了。

其实,key 参数表示身份标识。当我们定义了该参数时,原有的身份将被替换为自定义的标识。

5. 案例:给代码“增加”一个用户图形界面

假如你的领导发给你这样一批数据,该数据存储了一批身份证号码。你的领导需要你快速统计出他们的户籍地址和年龄,此时应该怎么做呢?

众所周知,身份证中记录了某人的个人信息,比如户籍地址 、出生年月等信息。在Python中,我们可以利用id_validator 库来实现身份证信息的相关提取。

from id_validator import validator      info = validator.get_info("130801200407010928")   info      """   {'address_code': '130801',    'abandoned': 1,    'address': '河北省承德市市辖区',    'address_tree': ['河北省', '承德市', '市辖区'],    'age': 18,    'birthday_code': '2004-07-01',    'constellation': '巨蟹座',    'chinese_zodiac': '申猴',    'sex': 0,    'length': 18,    'check_bit': '8'}   """   

对于任意一个身份证件号码,调用 validator 模块中的 get_info() 方法,可以返回一个字典格式的数据。于是,利用“键值对”即可获取该身份证所对应的地区、出生日期等信息。

有了上述基础,针对本节开头讲述的案例,我们使用 id_validator 库就可以快速统计公司所有员工的户籍地址和年龄。

import pandas as pd   from id_validator import validator      df = pd.read_excel("身份证号.xlsx")      df["省份"] = df["身份证号"].apply(lambda x: validator.get_info(x)["address_tree"][0])   df["城市"] = df["身份证号"].apply(lambda x: validator.get_info(x)["address_tree"][1])   df["年龄"] = df["身份证号"].apply(lambda x: validator.get_info(x)["age"])      df.to_excel("统计结果.xlsx",index=False)   

这里我们利用代码已经实现了需求,如何为这个 代码增加一个 图形化界面呢?

import os   import openpyxl   import pandas as pd   import PySimpleGUI as sg   from id_validator import validator      def main(path):       df = pd.read_excel(path)       df["省份"] = df["身份证号"].apply(lambda x: validator.get_info(x)["address_tree"][0])       df["城市"] = df["身份证号"].apply(lambda x: validator.get_info(x)["address_tree"][1])       df["年龄"] = df["身份证号"].apply(lambda x: validator.get_info(x)["age"])       path_new = os.path.join(os.path.dirname(path),"统计结果.xlsx")       df.to_excel(path_new,index=False)          layout = [       [sg.Text("请选择Excel文件所在目录:"),        sg.Input(size=(25,1),key="路径"),        sg.FileBrowse(button_text="选择",file_types=(("浏览文件","*.xlsx"),))],       [sg.Button("开始统计")]   ]          window = sg.Window("自动统计:身份证件归属地生成器",layout)          while True:       event, values = window.read()       if event == None:           break       elif event == "开始统计":           if values["路径"]:               main(values["路径"])               sg.popup("统计完毕!")       else:           sg.popup("请先输入Excel文件所在的路径!")          window.close()   

6. 程序打包

不管是微信、QQ,还是其他任何电脑软件,在它们的安装目录下通常存在一个扩展名为 .exe 的文件,双击它就可以直接运行对应的软件。

而对于Python程序打包,其实就是将代码文件打包成以 .exe 结尾的可执行文件(executable file)。其最大的好处就是,可以将Python代码在没有安装Python的计算机上运行。

6.1 pyinstaller库的安装与使用

在 Python 中,使用pyinstaller库可以很好地实现程序打包。

由于pyinstaller属于Python的第三方开源库,因此需要额外安装、导入后,才能使用。

如果你不能使用这个库,请使用如下命令安装这个库。

# 这个是在命令行窗口中执行   pip install pyinstaller   

安装完成后,可以使用下方代码测试是否安装成功。

import pyinstaller   

当我们成功安装该模块后,整个打包过程都是在“命令行窗口”中执行的。其语法格式如下所示:

Pyinstaller 参数1 参数2 Python程序.py   

常见参数如下所示:

6.2 程序打包的一般步骤

有了上述的基础,整个打包过程可以简化为以下3步:

  • Ⅰ 将Python代码保存为.py脚本文件 ;

  • Ⅱ 打开命令行窗口;

  • Ⅲ 执行打包代码;

但是这样做,生成的文件非常大,我的电脑生成的打包文件大约有700多M,不利于传输给他人使用。

因此,我们不推荐这种方式。那么,如何解决Python程序打包后出现的文件过大问题呢?

6.3 解决打包后文件过大的问题

为什么会出现打包后文件特别大的问题呢?

这是由于 Anaconda 自身内置了很多库,并且我们在使用 Python 的过程中,也安装了很多第三方模块。在执行打包命令时,它会将所有模块统统打包。

这里我们将介绍如何使用“虚拟环境”解决这个令人烦恼的问题 。首先,我们需要在电脑的【开始】菜单中找到并点击Anaconda Prompt 选项,并单击 打开。

接着,在打开的命令行窗口中依次执行以下命令。

# 创建虚拟环境   conda create -n 虚拟环境名字 python==3.8      # 激活虚拟环境   conda activate 虚拟环境名字      # 只安装 Python 程序涉及的模块   pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/   pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple/   pip install id-validator -i https://pypi.tuna.tsinghua.edu.cn/simple/   pip install PySimpleGUI -i https://pypi.tuna.tsinghua.edu.cn/simple/   pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/      # 切换文件目录   cd D:\Anaconda\Python\Python培训(第1期)\第18次课   D:          # 执行Pyinstaller打包程序   Pyinstaller -F -w a.py      # 退出虚拟环境   conda deactivate   

最终会生成一个dist文件夹,其中包含一个名为a.exe的应用程序(双击即可应用)。

---------------------------END---------------------------

题外话

当下这个大数据时代不掌握一门编程语言怎么跟的上脚本呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值