• Easy PyPI迎来新版V1.4.1,《有 较 大 改 动》


    这次的改动非常大,以至于完全无法列举完,请自行下载体验

    import os
    import tkinter as tk
    import tkinter.ttk as ttk
    from tkinter.filedialog import askdirectory
    import webbrowser
    from threading import Thread
    import sys
    from tkwebview2.tkwebview2 import WebView2
    ###
    from time import sleep
    
    sdo=False
    sdi=False
    
    
    if len(sys.argv)>=1 and '-debug' in sys.argv:
        sdi=True
    
    def showDebug(show_info=False):
        global sdo,sdo_btn,sdi,egg_count
        if show_info:
            if sdi:
                sdi=False
                sdi_btn['text']='显示调试信息'
            else:
                sdi=True
                sdi_btn['text']='隐藏调试信息'
        else:
            if sdo:
                win.geometry('300x340')
                sdo_btn['text']='显示调试选项  v'
                egg_count=0
                sdo=False
            else:
                win.geometry('300x450')
                sdo_btn['text']='隐藏调试选项  ^'
                sdo=True
    
    def dprint(msg):
        global sdi
        if sdi:
            print(msg)
    
    def init():
        global py_path,pip_path,python_path
        try:
            dprint('正在读取配置信息')
            py_path_f=open("./py_path.cfg",'r',encoding='utf-8')
            py_path=py_path_f.read()
            dprint('根据配置信息,您的Python位于:'+py_path)
            py_path_f.close()
            pip_path=py_path+"/scripts/pip.exe"
            python_path=py_path+"/python.exe"
            dprint('读取完成')
            if py_path=='使用环境变量':
                dprint('使用环境变量')
                pip_path='pip'
                python_path='python'
        except Exception as e:
            dprint('读取设置失败:'+str(e))
            py_path=askdirectory(title='请选择Python安装路径')
            py_path_f=open("./py_path.cfg",'w',encoding='utf-8')
            py_path_f.write(py_path)
            py_path_f.close()
            pip_path=py_path+"/scripts/pip.exe"
    
    def locate_pip(name=''):
        os.system("where pip")
        os.system("where pip3")
        print('==================================================')
    
    def install(name,arg1='',arg2=''):
        os.system(pip_path+" install "+name+' -i https://pypi.douban.com/simple')
        print('==================================================')
    
    def uninstall(name):
        if name=='pip':
            print('想什么呢?你准备卸载PyPI?')
        else:
            os.system(pip_path+" uninstall "+name)
        print('==================================================')
    
    def upgrade(name=''):
        os.system(python_path+" -m pip install --upgrade pip -i https://pypi.douban.com/simple")
        print('==================================================')
    
    def list_pkg(name=''):
        os.system(pip_path+" list")
        print('==================================================')
    
    def about(name=''):
        os.system(pip_path+" --version")
        print('==================================================')
        
    def start(func,p=''):
        #print(func)
        dprint('将向函数传入此类型的参数:'+str(type(p)))
        dprint('将向函数传入参数:'+p)
        #t=Thread(target=func,args=p)
        t=Thread(target=lambda:func(p))
        t.start()
    
    def view(url):
        webwin=tk.Tk()
        webwin.title('网页查看器')
        frame=WebView2(webwin,1200,680)
        frame.load_url(url)
        frame.pack(fill=tk.BOTH,expand=True)
        ttk.Button(webwin,text='在浏览器打开',command=lambda:webbrowser.open(url)).pack(fill=tk.X,side=tk.BOTTOM)
        webwin.mainloop()
    
    #彩蛋
    def egg():
        #webbrowser.open("https://player.bilibili.com/player.html?aid=798361795&cid=270775854&page=1&high_quality=0&danmaku=1")
        eggwin=tk.Tk()
        eggwin.title('你发现了彩蛋!')
        countdown_label=tk.Label(eggwin,text='你发现了彩蛋!',font=('微软雅黑','50'))
        countdown_label.pack()
        eggwin.update()
        sleep(2)
        countdown=3
        for i in range(0,3):
            countdown_label['text']='惊喜揭晓!'+str(countdown)
            eggwin.update()
            countdown-=1
            sleep(1)
        countdown_label.destroy()
        frame=WebView2(eggwin,960,540)
        frame.load_url("https://player.bilibili.com/player.html?aid=798361795&cid=270775854&page=1&high_quality=0&danmaku=1&t=0.0001")
        frame.pack(fill=tk.BOTH,expand=True)
        eggwin.title('没错,你又被骗了')
        eggwin.mainloop()
        
    
    dprint('您传入了参数:'+str(sys.argv))
    
    win=tk.Tk()
    win.title('Easy PyPI V1.4.1')
    win.geometry('300x340')
    win.resizable(0,0)
    win.update()
    
    init()
    
    name_enter=ttk.Entry(win)
    name_enter.insert(tk.END,'愚人节快乐!')
    name_enter['state']='readonly'
    name_enter.pack(fill=tk.X)
    
    dprint('执行:     '+pip_path+' install '+'(库名)'+' -i https://pypi.douban.com/simple')
    
    print('==================================================')
    
    #功能区
    ttk.Button(win,text='安装',state='disabled',command=lambda:start(install,name_enter.get())).pack(fill=tk.X)
    ttk.Button(win,text='卸载',state='disabled',command=lambda:start(uninstall,name_enter.get())).pack(fill=tk.X)
    ttk.Button(win,text='关于此库',state='disabled',command=lambda:view("https://pypi.org/project/"+name_enter.get()+"/")).pack(fill=tk.X)
    ttk.Button(win,text='列出所有已经安装的库',state='disabled',command=lambda:start(list_pkg)).pack(fill=tk.X)
    ttk.Button(win,text='更新PIP',state='disabled',command=lambda:start(upgrade)).pack(fill=tk.X)
    ttk.Button(win,text='关于PIP',state='disabled',command=lambda:start(about)).pack(fill=tk.X)
    ttk.Button(win,text='查看环境变量中有关PIP路径的配置',state='disabled',command=lambda:start(locate_pip)).pack(fill=tk.X)
    sdo_btn=ttk.Button(win,text='显示调试选项  v',command=showDebug)
    sdo_btn.pack(fill=tk.X)
    
    #介绍区被删去,因为它被CHM所替代
    
    tk.Button(win,text='2022 By 人工智障',state='disabled',bg='lightgrey',bd=0,command=lambda:view("https://www.cnblogs.com/totowang")).pack(fill=tk.X)
    tk.Button(win,text='问题反馈',state='disabled',bg='lightgrey',bd=0,command=lambda:view("https://support.qq.com/products/384388?")).pack(fill=tk.X)
    tk.Button(win,text='帮助',state='disabled',bg='lightgrey',bd=0,command=lambda:view("http://rgzz.great-site.net/soft/ezpip/WebHelp/")).pack(fill=tk.X)
    tk.Button(win,text='开源许可证',state='disabled',bg='lightgrey',bd=0,command=lambda:view("https://www.mozilla.org/en-US/MPL/1.1/")).pack(fill=tk.X)
    
    
    #调试选项
    ttk.Button(win,text='显示输入的内容',state='disabled',command=lambda:print(name_enter.get()+'\n'+'==================================================')).pack(fill=tk.X)
    ttk.Button(win,text='使用内建网页查看器打开输入的网址',state='disabled',command=lambda:view(name_enter.get())).pack(fill=tk.X)
    
    sdi_btn=ttk.Button(win,text='显示调试信息',state='disabled',command=lambda:showDebug(show_info=True))
    sdi_btn.pack(fill=tk.X)
    
    egg_btn=ttk.Button(win,text='嘿!快错过我!',command=egg)
    egg_btn.pack(fill=tk.X)
    
    
    win.mainloop()

    愚人节快乐

  • 相关阅读:
    JSON对象和字符串之间的相互转换
    php小数取整的方法
    Vim之Nerd Tree杂草帮助
    PHP获取汉字拼音首字母
    chmod 变更文件或目录的权限
    grep
    tar
    Linux下socket编程 多线程 进程超时阻塞、卡死问题定位
    一些Lambda表达式的学习
    读高性能MySQL的笔记
  • 原文地址:https://www.cnblogs.com/TotoWang/p/ezpip_v041.html
Copyright © 2020-2023  润新知