用tkinter写出you-get下载器界面,并用pyinstaller打包成exe文件
本文为原创文章,转载请标明出处
一、you-get介绍
you-get是一个基于 python 3
的下载工具,使用 you-get 可以很轻松的下载到网络上的视频、图片及音乐。目前支持网易云音乐、ab 站、百度贴吧、斗鱼、熊猫、爱奇艺、凤凰视频、酷狗音乐、乐视、荔枝fm、秒拍、腾讯视频、优酷土豆、央视网、芒果tv 等80多个站点。
安装方法:
pip install you-get
二、tkinter介绍
tkinter是python的标准gui库,是tk interface的缩写。python提供了tkinter包,里面含有tkinter接口。
三、pyinstaller介绍
pyinstaller是一个能将py文件转换成单个可执行文件的程序,操作系统支持windows, linux, mac os x, solaris和aix。并且很多包都支持开箱即用,不依赖环境。
安装方法:
pip install pyinstaller
四、代码及注释分析
from tkinter import *
from tkinter import filedialog
from tkinter.scrolledtext import scrolledtext
import subprocess as sub
import threading
top = tk()
top.title("you-get视频下载器,made by @拼命三郎")
#获取屏幕尺寸以计算布局参数,使窗口居屏幕*,其中width和height为界面宽和高
width=555
height=519
screenwidth = top.winfo_screenwidth()
screenheight = top.winfo_screenheight()
alignstr = '%dx%d+%d+%d' % (width, height, (screenwidth-width)/2, (screenheight-height)/2)
top.geometry(alignstr)
#阻止窗口调整大小
top.resizable(0,0)
#设置窗口图标
top.iconbitmap('f:\python\gui界面\you-get - v0 -20190507\play_24px_1099805_easyicon.net.ico')
#框架布局
frame_root=frame(top)
frame_left=frame(frame_root)
frame_right=frame(frame_root)
frame_left.pack(side=left)
frame_right.pack(side=right,anchor=n)
frame_root.pack()
#输入视频链接
tip1= label(frame_left, text='请输入视频链接: ',font = ('楷体',25))
tip1.pack(padx=10,anchor=w)
#视频链接输入框
input_url= entry(frame_left,bg='#f7f3ec')
input_url.pack(ipadx=159,ipady=8,padx=20,anchor=w)
#请选择保存位置
tip2=label(frame_left, text='请选择保存位置: ',font = ('楷体',25))
tip2.pack(padx=10,anchor=w)
#保存地址输入框
input_save_address= entry(frame_left,bg='#f7f3ec')
input_save_address.pack(ipadx=159,ipady=8,padx=20,anchor=w)
#浏览本地文件夹,选择保存位置
def browse_folder():
#浏览选择本地文件夹
save_address = filedialog.askdirectory()
#把获得路径,插入保存地址输入框(即插入input_save_address输入框)
input_save_address.insert(0,save_address)
#下载函数
def download():
#从输入框获取视频链接
url=input_url.get()
# 从输入框获取保存地址
save_address=input_save_address.get()
cmd = f'you-get -o {save_address} {url}'
print(cmd)
#将cmd结果重定向到tkintergui,即将命令行的结果显示scrolledtext(滚动文本框)控件里
p = sub.popen(cmd, stdout=sub.pipe, stderr=sub.pipe)
output, errors = p.communicate()
output = output.decode('utf-8')
stext.insert(end, output)
#使滚动文本框的滚动条始终保持在最底段
stext.yview_moveto(1)
#为避免在下载时tkinter界面卡死,创建线程函数
def thread_it(func, *args):
# 创建
t = threading.thread(target=func, args=args)
# 守护 !!!
t.setdaemon(true)
# 启动
t.start()
# “浏览文件夹”按钮
browse_folder_button = button(frame_right, text='浏览',font = ('楷体',15),command=lambda :thread_it(browse_folder))
browse_folder_button.pack(pady=110,side=left,anchor=w)
#新建空白标签,无实际作用,内容为空,为了让界面对称,更美观,可理解为“占位符”
label(frame_right,text=' ').pack(pady=110,side=left,anchor=w)
# “下载”按钮
download_button = button(frame_left, text='下载',font = ('楷体',15),command=lambda :thread_it(download))
download_button.pack( padx=20,pady=6,anchor=w)
# scrolledtext组件(滚动文本框)
stext = scrolledtext(frame_left, width=60, height=23, background='#f7f3ec')
stext.pack(padx=20,anchor=w)
top.mainloop()
注意:
这里的ico要换成你自己本地的,如果不换,它就会报错说找不到文件。
如果你电脑里没有ico,可以到这里下载 https://www.easyicon.net/1099832-python_icon.html
五、运行实例截图
下载完成后,即会在你选择的路径产生视频。
六、用pyinstaller打包成exe
打包前先准备好自己的logo
到py文件所在路径按住shift键,点击鼠标右键选择“在此处打开powershell 窗口(s)”
输入以下命令即可生成exe文件
pyinstaller -f -w -i play_96px_1099805_easyicon.net.ico make_the_downloader_with_you-get_v1.py
执行成功后,会在路径下多出以下几个文件夹和文件
其中exe文件就在dist目录里,打开即可运行。
如果你看到这样的界面,那么说明你大功告成了……
原文来自:https://www.cnblogs.com/songhouhou/archive/2019/05/11/10849876.html
上一篇: 前端之Html元素的分类