用tkinter写出you-get下载器界面,并用pyinstaller打包成exe文件

2023-05-16

写在前面:本文为笔者最早于 2019-05-11 23:15 以“@拼命三郎”的身份发表于博客园

在这里插入图片描述

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

一、you-get介绍

you-get是一个基于 python3 的下载工具,使用 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
在这里插入图片描述

五、运行实例截图

1576802-20190511194653465-55340464.png
下载完成后,即会在你选择的路径产生视频。
在这里插入图片描述

六、用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目录里,打开即可运行。
在这里插入图片描述
如果你看到这样的界面,那么说明你大功告成了……

如果你觉得我的分享还可以请点击推荐,分享给你的朋友让我们一起进步~
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • Jetpack Compose 从入门到入门(七)

    本篇进入Compose 动画部分 1 动画预览 在本系列第一篇中我们提到过 xff0c 64 Preview可以帮我们实现UI的预览功能 xff0c 简单的交互和播放动画 在Android Studio Bumblebee xff08 大黄
  • Android 12 变更及适配攻略

    这几个月有点忙 xff0c 一年一篇的适配文章来的有点晚了 但其实也还好 xff0c 因为我们项目也是下半年才适配 我这边也是提前调研踩坑 xff0c 评估一下工作量 这个时间点也完全跟得上Google Play的审核要求 xff08 11
  • Jetpack Compose 从入门到入门(八)

    接着上一篇的动画部分 xff0c 本篇主要是自定义动画与Animatable AnimationSpec 上一篇中 xff0c 出现了多次animationSpec属性 xff0c 它是用来自定义动画规范的 例如 xff1a span cl
  • Jetpack Compose 从入门到入门(九)

    本篇是Compose的手势部分 点击 添加clickable修饰符就可以轻松实现元素的点击 此外它还提供无障碍功能 xff0c 并在点按时显示水波纹效果 span class token annotation builtin 64 Comp
  • 记参加 2022 Google开发者大会

    前几天有幸参加了2022年Google 开发者大会 Google Developer Summit xff0c 上一次参加Google开发者大会还是2019年 这期间因为众所周知的原因 xff0c 开发者大会都改为了线上举办 和上次相比可以
  • Jetpack Compose 从入门到入门(十)

    本篇介绍如何将Jetpack Compose 添加到已有应用中 xff0c 毕竟大多数情况都是在现有项目中使用 Jetpack Compose 旨在配合既有的基于 View 的界面构造方式一起使用 如果您要构建新应用 xff0c 最好的选择
  • Flutter状态管理之Riverpod 2.0

    两年前分享过一篇Flutter状态管理之Riverpod xff0c 当时riverpod的版本还是0 8 0 xff08 后来文章更新到0 14版本 xff09 当时提到过有一些不足之处 xff1a 毕竟诞生不久 xff0c 它还不能保证
  • Python:元组和字典简述

    目录 1 列表的方法2 for循环遍历列表2 1 语法2 2 range 函数 3 元组3 1 元组的基本概念3 2 元组的创建3 3 元组的解包3 3 1 号在解包中的用法 4 字典4 1 字典的基本概念4 2 字典的使用4 2 1 字典
  • 七种常见软件开发模型

    目录 瀑布模型 xff08 面向文档的软件开发模型 xff09 演化模型 螺旋模型 增量模型 构件组装模型 统一过程 xff08 up xff09 xff08 迭代的软件过程 xff0c 以架构为中心 xff09 敏捷开发模型 瀑布模型 x
  • IP安全策略:只允许指定IP连接远程桌面,限制IP登录

    一 xff0c 新建IP安全策略 WIN 43 R打开运行对话框 xff0c 输入gpedit msc进入组策略编辑器 依次打开 本地计算机 策略 计算机配置 Windows设置 安全设置 IP安全策略 在 本地计算机上 在右面的空白处右击
  • 2022年终总结

    不知不觉就到了年末 xff0c 感叹时间过的真快 我自己坚持写了七年多的博客 xff0c 但这其实是我第一次去写年终总结 也不知道怎么写 xff0c 就简单聊聊 写博客的初衷就是个人收获 xff0c 学习的记录 xff0c 分享出来如果能帮
  • Rust库交叉编译以及在Android与iOS中使用

    本篇是关于交叉编译Rust库 xff0c 生成Android和iOS的二进制文件 xff08 so与a文件 xff09 xff0c 以及简单的集成使用 1 环境 系统 xff1a macOS 13 0 M1 Pro xff0c Window
  • 利用Rust与Flutter开发一款小工具

    1 起因 起因是年前看到了一篇Rust 43 iOS amp Android xff5c 未入门也能用来造轮子 xff1f 的文章 xff0c 作者使用Rust做了个实时查看埋点的工具 其中作者的一段话给了我启发 xff1a 无论是 Loo
  • 在Android与iOS中使用LLDB调试Rust程序

    在Rust中通过println 打印的日志信息在Xcode中可以显示 xff0c 但是Android Studio里不显示 所以Android可以使用android logger实现日志输出 但是开发中仅使用打印日志的方式进行调试还是不够的
  • 使用jni-rs实现Rust与Android代码互相调用

    本篇主要是介绍如何使用jni rs 有关jni rs内容基于版本0 20 0 xff0c 新版本写法有所不同 入门用法 在Rust库交叉编译以及在Android与iOS中使用中我简单说明了jni rs及demo代码 xff0c 现在接着补充
  • Android 13 变更及适配攻略

    准备工作 首先将我们项目中的 targetSdkVersion和compileSdkVersion 升至 33 影响Android 13上所有应用 1 通知受限 对新安装的应用的影响 xff1a 如果用户在搭载 Android 13 或更高
  • 洛谷 P1185 绘制二叉树

    一道极为恐怖的模拟题 xff0c 以定义函数的方式确定每个点的x xff0c y就能轻松的做出这道题 xff0c 参考神犇题解 洛谷 P1185 KH 39 s blog 洛谷博客 遇到这种题估计就是放弃了 AC代码 xff08 抄的 xf
  • 洛谷 P3366 【模板】最小生成树#Kruskal+并查集

    说了最小生成树 xff0c 那么就用经典的Prim或者Kruskal xff0c 不过Prim实现代码有点多 xff0c 这里用Kruskal举例 注意事项 1 Kruskal是用来找最小生成树的 根据树的定义可以知道 树是无向图 所以Kr
  • STM32MP157AAA3裸机点灯(汇编)

    STM32MP157AAA3裸机点灯 汇编 MP157的A7核裸机点灯 使用的开发板为华清远见的MP157开发板 xff0c 默认板内emmc已经烧写好了uboot 这篇就只记录一下汇编点灯过程 xff0c uboot等内容暂不涉及 xff
  • 用tkinter写出you-get下载器界面,并用pyinstaller打包成exe文件

    写在前面 xff1a 本文为笔者最早于 2019 05 11 23 15 以 64 拼命三郎 的身份发表于博客园 本文为原创文章 xff0c 转载请标明出处 一 you get介绍 you get是一个基于 python3 的下载工具 xf