IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> python工具开发:pip指令GUI程序 -> 正文阅读

[开发工具]python工具开发:pip指令GUI程序

一,开发需求和开发思路

1.开发需求

python作为一门超级语言,其第三方库众多,适合我们用于二次开发成其他功能的程序,那么管理这些第三方库的工具就不得不说pip了!pip工具能让我们更加方便地管理第三方库,但是如何不在集成IDE专业软件上(pycharm那种),本地环境使用的pip工具只能在打开的cmd中操作命令。首先,每次都需要打开cmd窗口是一件较麻烦的事,其次,对于一个库(查询,下载安装,卸载)指令不连续,且要重复输入不同的指令,这让我们的工作和生活的时间和精力都浪费在这些麻烦事了!那么我们是否可以开发出一个pip工具GUI程序,能减轻pip工具带来的麻烦事呢?
答案是可以的,让我们一起来探索吧!
在这里插入图片描述

2.开发思路

pip工具操作缺点对应解决思路
每次都需要打开并在cmd窗口运行让程序自动化地执行对应操作(多数情况下不打开cmd窗口)
对于同一个库,pip指令输入不连续在GUI窗口集成常见的pip工具指令功能,减少输入亢余

3.前期准备

知识储备备注
面向对象编程:类和对象使用类,能使程序二次开发和维护更好,并且程序代码模块化和结构明了,利于阅读和开发
GUI开发tkinterpython自带的tkinterGUI编写,虽然总体UI界面不比主流美观,但是开发简单,且外观逻辑上能满足我们的需求
pyinstallerpython常见且流行的打包程序库,需要下载安装

二,编写代码

1.PIPS.py

该PIPS.py文件主要放置PIPS类,PIPS类主要有执行对应的pip操作的方法!

import os
class PIPS:#PIPS类:主要存储具体的pip指令实际操作的类
    def __init__(self):
        pass#暂无类变量,设为pass就行

    def install(self,packages):#下载安装的cmd操作函数
        cmd='pip install '+packages
        operation = os.popen(cmd)#不同打开cmd窗口,就可以运行命令
        return operation.read()#返回成功后的信息内容

    def uninstall(self,packages):#卸载的cmd操作函数
        cmd='pip uninstall '+packages#由于要在cmd中做二次选择(y或n),所以要打开cmd窗口
        os.system(cmd)

    def piplist(self):#库列表的cmd操作函数
        cmd='pip list'
        operation = os.popen(cmd)
        return operation.read()

    def checkpip(self,packages):#库查询的cmd操作函数
        cmd='pip show '+packages
        operation = os.popen(cmd)
        return operation.read()

    def uppip(self,packages):#更新库的cmd操作函数
        cmd='python -m pip install --upgrade '+packages
        operation = os.popen(cmd)
        return operation.read()

    def opencmd(self):#cmd打开窗口操作函数
        os.system('cmd/c start')

2.PIPGUI.py

该PIPGUI.py文件(是主程序)主要放置PIPGUI类,PIPGUI类主要是GUI编写的类和导入并使用前面的PIPS类的方法。

from tkinter import *
from PIPS import PIPS
class PIPGUI(PIPS):
    #GUI控件类定义
    def __init__(self):
        super().__init__()#继承自PIPS类
        #主窗体
        root=Tk()
        root.title('pip下载程序')
        root.geometry('1020x550+200+80')#程序窗口大小及位置
        root.iconbitmap('pips.ico')#窗口图标

        # install按钮
        install_button = Button(root, text='下载并安装', width=18, height=2, command=self.installs)
        install_button.place(x=20, y=100)

        # uninstall按钮
        uninstall__button = Button(root, text='卸载', width=18, height=2, command=self.uninstalls)
        uninstall__button.place(x=200, y=100)

        # 库列表按钮
        list_button = Button(root, text='第三库列表', width=18, height=2, command=self.piplists)
        list_button.place(x=20, y=160)

        # 查询库信息按钮
        checkp_button = Button(root, text='库查询', width=18, height=2, command=self.checkpips)
        checkp_button.place(x=200, y=160)

        # pip指令更新按钮
        up_button = Button(root, text='更新库包', width=18, height=2, command=self.uppips)
        up_button.place(x=20, y=220)

        # cmd打开按钮
        self.cmd_textout_button = Button(root, text='打开cmd窗口', width=18, height=2, command=self.opencmds)
        self.cmd_textout_button.place(x=200, y=220)

        # 输入框清空按钮
        self.in_textout_button = Button(root, text='清空输入框', width=18, height=2, command=self.in_textouts)
        self.in_textout_button.place(x=200, y=280)

        #cmd运行内容清除按钮
        self.cmd_textout_button=Button(root, text='清空cmd运行结果', width=18, height=2, command=self.cmd_textout)
        self.cmd_textout_button.place(x=20,y=280)

        # 运行内容显示
        self.cmd_text = Text(root, width=85, height=40)
        self.cmd_text.place(x=400, y=10)

        # 输入显示窗口
        self.in_text = Text(root, width=50, height=2)
        self.in_text.place(x=20, y=10)

        # 程序状态标签
        self.tip_label = Label(root, text='程序操作提示', width=35, height=2, bg='green', font=('宋体', 14))
        self.tip_label.place(x=20, y=430)

        # 操作提示栏
        self.tipout_label = Label(root, width=50, height=3, bg='green',font=('宋体',10))
        self.tipout_label.place(x=20, y=485)
        root.mainloop()

    # 函数部分:
    def text_get(self):  # 获取输入框内容函数
        return self.in_text.get('1.0', 'end')

    def cmd_in(self,result):  # cmd运行结果输入函数
        self.cmd_text.insert(1.0, result)

    def cmd_textout(self):  # cmd内容清除函数
        self.cmd_text.delete('1.0', 'end')
        self.tipout_label['text'] = '你清空了cmd运行内容框!'

    def installs(self):  # 下载安装按钮函数
        self.cmd_textout()
        self.tipout_label['text'] = '你使用了下载安装的功能!注意使用前不要开代理节点!'
        result = self.install(self.text_get())
        self.cmd_in(result)

    def uninstalls(self):  # 卸载按钮函数
        self.cmd_textout()
        self.tipout_label['text'] = '不要输入带有等号的命令!请到弹出的cmd窗口确定是否卸载!'
        self.uninstall(self.text_get())

    def piplists(self):  # 库列表按钮函数
        self.cmd_textout()
        self.tipout_label['text'] = '你查询了库列表,查询结果可下滑查看更多的内容'
        result = self.piplist()
        self.cmd_in(result)

    def checkpips(self):  # 库查询按钮函数
        self.cmd_textout()
        self.tipout_label['text'] = '注意输入时不要带有等号!'
        result = self.checkpip(self.text_get())
        self.cmd_in(result)

    def uppips(self):  # 库更新按钮函数
        self.cmd_textout()
        self.tipout_label['text'] = '你使用了库更新的功能!'
        result = self.uppip(self.text_get())
        self.cmd_in(result)

    def in_textouts(self):#输入框清除函数
        self.in_text.delete('1.0', 'end')
        self.tipout_label['text'] = '你清空了输入框窗口!'
        
    def opencmds(self):#cmd打开窗口操作函数
        self.opencmd()
        self.tipout_label['text']='你打开了cmd窗口!'

if __name__ == '__main__':
    PIPGUI()

三,程序打包

1,打包过程

(1)找到自己代码文件的目录,复制下来
在这里插入图片描述
(2)打开cmd窗口,把复制的目录复制到cmd窗口,并在前加cd,如下例所示:
在这里插入图片描述
(3)确认已经下载安装好pyinstaller,输入如下指令:

pyinstaller -F <程序主文件>.py

在这里插入图片描述
(4)在生成的文件中,只保留<主程序>.spec文件,其余都删除(当然我们原来的py代码文件也在该目录下,肯定不用删除,保留就行)!如下:
在这里插入图片描述

(5)打开后缀为.spec文件,在Analysis中的第一行的列表,再添加我们主程序依赖和要导入的模块PIPS.py文件的字符串形式,如下图:
在这里插入图片描述

(6)再重新打开cmd,进入文件目录,输入以下指令:

pyinstaller -F  <主程序名>.spec

如下图:
在这里插入图片描述
(7)提示打包成功后,我们可以删除生成的_pycache_和build文件,只保留dist文件夹,因为这里面放置了生成exe程序,另外程序窗体要用到pips.ico文件,默认打包是不会把它移到dist文件夹的,我们要复制到dist文件下!
在这里插入图片描述

2.功能操作描述和使用

打包好的程序,打开后界面如下:
在这里插入图片描述
以下是各部分功能描述:

控件功能描述
输入框接受输入的库名,根据对应的命令功能,可添加指定的版本号
cmd运行结果框把cmd运行结果输入到该框内显示,最右边最大的即是该框
下载并安装按钮下载并安装库
卸载按钮卸载库,点击后需要到附带的cmd窗口内填y(是)或n(否),填完不用关闭该窗口
第三方库列表按钮点击后,即可把安装到本地的第三库总列表,并把信息反馈到cmd运行结果框
库查询按钮查询对应的库信息,并把信息反馈到cmd运行结果框
更新库包按钮更新对应的库,并把信息反馈到cmd运行结果框
打开cmd窗口按钮打开新的cmd窗口
清除cmd运行结果按钮点击后把cmd运行结果框的内容都清空了
清除输入框按钮点击后把输入框内容清空
程序操作提示主要对程序各个功能操作的一些提示

3.开发问题中遇到的问题及解决方法汇总:

pyinstaller打包python程序(多文件)
Python-Tkinter图形化界面设计(详细教程 )

四,程序成品下载

为了更好地学习和分享该部分的内容,以及提供成品程序给大家直接观摩,特意放资源链接在此,供各位读者下载!
pip指令GUI程序下载链接
最后,文中如有不足,敬请批评指正!

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 13:02:21  更:2021-10-04 13:03:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/23 14:03:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计