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()
愚人节快乐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!