Easy PyPI V1.3.0发布!反馈、帮助功能上线了!

这次,我成功通过CSDN上Smart-Space这位大佬开发的tkwebview2,实现了软件内显示网页的功能。这让我对3.0.0感到有希望,我希望最终会有一个像应用商店的软件出现在各位面前。

此外,在对各大开源许可有了一定了解,并且在精挑细选过后,我选用了MPL这一开源许可,这个版本的软件和帮助文档也会遵循MPL 1.1这个开源许可。帮助文档中有MPL的副本,软件中也可以查看MPL的在线原版。


本次更新内容:

  • 增加了内建浏览器
  • 增加了在线帮助、反馈的入口
  • 增加了查看库的详细信息的功能,主要是显示PyPI官网上的内容
  • 内建浏览器本是为了彩蛋而制作!

代码

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.3.0')
win.geometry('300x340')
win.resizable(0,0)
win.update()

init()

name_enter=ttk.Entry(win)
name_enter.pack(fill=tk.X)

dprint('执行:     '+pip_path+' install '+'(库名)'+' -i https://pypi.douban.com/simple')

print('==================================================')

#功能区
ttk.Button(win,text='安装',command=lambda:start(install,name_enter.get())).pack(fill=tk.X)
ttk.Button(win,text='卸载',command=lambda:start(uninstall,name_enter.get())).pack(fill=tk.X)
ttk.Button(win,text='关于此库',command=lambda:view("https://pypi.org/project/"+name_enter.get()+"/")).pack(fill=tk.X)
ttk.Button(win,text='列出所有已经安装的库',command=lambda:start(list_pkg)).pack(fill=tk.X)
ttk.Button(win,text='更新PIP',command=lambda:start(upgrade)).pack(fill=tk.X)
ttk.Button(win,text='关于PIP',command=lambda:start(about)).pack(fill=tk.X)
ttk.Button(win,text='查看环境变量中有关PIP路径的配置',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 人工智障',bg='lightgrey',bd=0,command=lambda:view("https://www.cnblogs.com/totowang")).pack(fill=tk.X)
tk.Button(win,text='问题反馈',bg='lightgrey',bd=0,command=lambda:view("https://support.qq.com/products/384388?")).pack(fill=tk.X)
tk.Button(win,text='帮助',bg='lightgrey',bd=0,command=lambda:view("http://rgzz.great-site.net/soft/ezpip/WebHelp/")).pack(fill=tk.X)
tk.Button(win,text='开源许可证',bg='lightgrey',bd=0,command=lambda:view("https://www.mozilla.org/en-US/MPL/1.1/")).pack(fill=tk.X)


#调试选项
ttk.Button(win,text='显示输入的内容',command=lambda:print(name_enter.get()+'\n'+'==================================================')).pack(fill=tk.X)
ttk.Button(win,text='使用内建网页查看器打开输入的网址',command=lambda:view(name_enter.get())).pack(fill=tk.X)

sdi_btn=ttk.Button(win,text='显示调试信息',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()

 

posted @ 2022-03-09 14:36  真_人工智障  阅读(142)  评论(0编辑  收藏  举报