当前位置:
首页 > Python基础教程 >
-
python基础教程之用tkinter写出you-get下载器界面,并
本文为原创文章,转载请标明出处
一、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
四、代码及注释分析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
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() |
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式