制作工具下载器 by tkinter

本文介绍了如何使用Python的tkinter库制作一个简单的下载器,实现了进度条功能,并讨论了将程序封装为exe文件的问题。虽然目前下载器仅支持已知工具包的下载,未来计划增加更多功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

这是一次想 实现进度条功能 而引发的小程序开发,越做发现涉及的东西越多,本文只做简单成效实现过程的描述,优化项目以后再做补充。

目录


概述

  • 先上效果图
    开始任务
    完成
    目录文件

  • 功能介绍
    该下载器只能下载已知工具包(即将例如 QQ、python、nginx 等包文件的链接复制粘贴到那个链接 Entry 里),通过点按打开按钮,选择要存放的目录。
    视频质量下拉菜单和暂停下载功能暂未实现,有待后期补充,如有大神,请指点一二。

源代码

本程序基于 Python 3.6.6 编写,如用 3.x 版本编辑,问题应该不大,请自行解决。
后期生成 exe 程序,需要用到 PyInstaller,我用的版本是 3.3.1。

实现下载器功能

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/8/27 15:40
# @Author  : Nimo
# @File    : study.py
# @Software: PyCharm

import os
import urllib
import time
import requests
from tkinter import *
from tkinter.scrolledtext import ScrolledText
from PIL import Image, ImageTk
import threading
from tkinter.filedialog import askdirectory
# 这里引入的两个包是为了后期生成exe程序用,源程序测试时请注释掉这两行以及后面的相关行
import base64
from picture.bak import img as logo

class GetFile():  #下载文件
    def __init__(self, url, dir_path):
        self.url = url
        self.dir_path = dir_path
        self.filename = ""
        self.re = requests.head(self.url, allow_redirects=True)  # 运行head方法时重定向
    # url and path 有效性检查
    def _is_valid(self):
        if self.url is '':
            scrolled_text.insert(INSERT, '请输入包件链接...\n')
            scrolled_text.see(END)
            return None
        else:
            pattern = '^(https|http|ftp)://.+$'
            # pattern = '^(https|http:)//([0-9a-zA-Z]*\.[0-9a-zA-Z]*\.(com|org)/).+$'
            url_pattern = re.compile(pattern, re.S)
            result = re.search(url_pattern, self.url)
            if result is None:
                scrolled_text.insert(INSERT, '错误的链接,请重新输入...\n')
                scrolled_text.see(END)
                return None
            else:
                if self.dir_path is '':
                    scrolled_text.insert(INSERT, '请输入包件保存路径...\n')
                    scrolled_text.see(END)
                    return None
                else:
                    path_pattern = re.compile('(^[A-Z]:/[0-9a-zA-Z_]+(/[0-9a-zA-Z_]+)*$)|(^[A-K]:/[0-9a-zA-Z_]*$)',
                                              re.S)
                    result = re.search(path_pattern, self.dir_path)
                    if result is None:
                        scrolled_text.insert(INSERT, '错误的文件路径,请重新输入...\n')
                        scrolled_text.see(END)
                        return None
                    else:
                        return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值