本文为原创文章,转载请标明出处

一、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目录里,打开即可运行。

如果你看到这样的界面,那么说明你大功告成了……

如果你觉得我的分享还可以请点击推荐,分享给你的朋友让我们一起进步~

用tkinter写出you-get下载器界面,并用pyinstaller打包成exe文件的更多相关文章

  1. python3带tkinter窗口的ftp服务器,并使用pyinstaller打包成exe

    python带tkinter窗口的ftp服务器,使用python3编写,打包使用pyinstaller,命令 pyinstaller -F .\ftpserver.py 代码也可在我的github上下 ...

  2. 下载windows官网镜像并打包成iso文件

    一.微软官网下载镜像地址:https://www.microsoft.com/zh-cn/software-download/ 选择所需下载的win10.win7等windows镜像(以win10为例 ...

  3. BT下载器Folx中删除任务与删除文件的功能区别

    当用户使用Folx完成了任务下载后,该任务仍会保留在下载列表中,并标注"已结束"的标记.随着使用时间的增长,Folx下载列表中会包含过多的"已结束"任务,用户需 ...

  4. tkinter 打包成exe可执行文件

    1.安装pyinstaller pip install pyinstaller 2.打包 打开cmd,切换到需要打包的文件(demo.py)目录.执行 pyinstaller -F -w demo.p ...

  5. 【python基础】python程序打包成.exe运行时会弹出黑框

    用python调用.bat或者.exe文件时,一般调用 方式如下: os.system("C:\Windows\System32\osk.exe") 对吧,这样就会因为调用了系统s ...

  6. 使用tkinter打造一个小说下载器,想看什么小说,就下什么

    前言 今天教大家用户Python GUI编程--tkinter 打造一个小说下载器,想看什么小说,就下载什么小说 先看下效果图 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkint ...

  7. pyinstaller如何将自己写的模块一并打包到exe中

    使用pyinstaller命令 pyinstaller -F main.py 打包时,若mian.py代码中存在引入自己写的模块,而打包成exe文件时,并不会自动引入自己写的模块,打包成功后,点击打开 ...

  8. FPGA软件使用基础之ISE下载配置 XILINX 下载器使用

    重新编辑 转载于https://www.cnblogs.com/lpp2jwz/p/7306020.html 下载程序 下载BIT 格式程序到FPGA 先插好下载器 在 ISE 中编译完 BIT 文件 ...

  9. 06-python进阶-多线程下载器练手

    我们需要用python 写一个多线程的下载器 我们要先获取这个文件的大小 然后将其分片 然后启动多线程 分别去下载 然后将其拼接起来 #!/usr/bin/env python#coding:utf- ...

随机推荐

  1. HTTP请求头中的那些东西

    一.HTTP请求头是什么? HTTP请求头,HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST).如有必要,客户程序还可以选择发送其他的请求头. 二.HT ...

  2. Ubuntu18 安装jdk8

    按照网上能找到的方法,添加仓库已经不行了,具体原因如下: I look up to the webupd8 site and it seems that the ppa was discontinue ...

  3. hdu 2189 悼念512汶川大地震遇难同胞——来生一起走 基础母函数

    #include <iostream> #include <algorithm> #include <cstring> using namespace std; ] ...

  4. Mysql读写分离操作之mysql-proxy

    常见的读写方式 基于程序代码内部实现 在代码中根据select.insert进行选择分类:这类方法也是生产常用的,效率最高,但是对开发人员比较麻烦.架构不能灵活调整 基于中间件的读写分离: mysql ...

  5. DoTween学习笔记

    using DG.Tweening:   Tweener 首先dotween在游戏刚开始运行时会默认进行一次初始化 DOTween.Init(); 如果为了有更好的效率,可以手动控制最大同时进行dot ...

  6. Node.Js的Module System 以及一些常用 Module

    Node.Js学习就按照这本书的流程来. 在第7章结束与第10章结束时分别自己出一个小项目练练手.Node.Js的入门学习计划是这样. 目录:, QQ:1045642972 欢迎来索书以及讨论Node ...

  7. MySQL日期处理

    一.MySQL 获得当前日期时间 函数1.1 获得当前日期+时间(date + time)函数:now()mysql> select now(); +---------------------+ ...

  8. AJPFX总结List的三个子类的特点

    ArrayList:                        底层数据结构是数组,查询快,增删慢.                        线程不安全,效率高.              ...

  9. (转)新手学习System Verilog & UVM指南

    从刚接触System Verilog以及后来的VMM,OVM,UVM已经有很多年了,随着电子工业的逐步发展,国内对验证人才的需求也会急剧增加,这从各大招聘网站贴出的职位上也可以看出来,不少朋友可能想尽 ...

  10. 错误消息 This computer doesn't have VT-X/AMD-v enabled

    在VirtualBox的Ubuntu虚拟机里试图本地安装Kyma(一个基于Kubernetes的开源框架)时,遇到下面的错误信息: E0827 11:19:38.972489 3093 start.g ...