VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 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(滚动文本框)控件里
    = 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):
    # 创建
    = 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()