用python3打造属于自己的下载软件,利用python自身的下载功能结合GUI界面设计的相关知识,可以打造属于自己的清新简明的下载界面,博主自己设计的界面在下方,读者可自行修改GUI界面,下图:

废话不多说,直接进入代码模式。首先导入python相关的模块:

import requests
from tkinter import *
import tkinter as tk
import tkinter.messagebox
import tkinter.filedialog
import time
import zipfile
import random
from fake_useragent import UserAgent
from configparser import ConfigParser
import threading
import win32api
import win32con

接着设置复制和粘贴的功能函数:

def get_copy():win32api.keybd_event(17, 0, 0, 0)  #ctrl键位码是17win32api.keybd_event(67, 0, 0, 0)   #c键位码是67win32api.keybd_event(67, 0, win32con.KEYEVENTF_KEYUP, 0)    #释放按键win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)def get_paste():win32api.keybd_event(17, 0, 0, 0)  #ctrl键位码是17win32api.keybd_event(86, 0, 0, 0)   #v键位码是86win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)    #释放按键win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)

然后设置下载文件的存放位置:

# 选择文件安放的位置
def get_wen():# 使用文件对话框选择文件# filedialog.askopenfilenames可以返回多个文件名data_1 = tkinter.filedialog.askdirectory(title="选择文件路径")data = data_1.replace('/' , r'\\')# print(type(data),data)# exit()entry_2.delete(0, END)entry_2.insert(0, data)

最后编写最重要的下载主函数:

# 主函数
def get_zhu():ua = UserAgent()url = str(entry_1.get())header = {'User-Agent': ua.random}# print(header , url)# exit()target = ConfigParser()target.read('代理IP.ini', encoding='utf-8')pwd = target.get('IP', 'ip')ip_list = eval(pwd)ip = random.choices(ip_list)[0]# 下载的文件名filename = url.rpartition('/')[-1]response = requests.get(url, headers=header , proxies= ip , stream=True)if response.status_code == 200:# 文件的总长度zhong_wen = int(response.headers['content-length'])# 下载文件的长度data_wen = 0name = entry_2.get() + r"\\" + filenamewith open(name, 'ab') as fp:for chunk in response.iter_content(chunk_size=512):# 下载中的文件data_wen += len(chunk)# 将下载文件占下载总文件以百分比的形式显示now_pross = (data_wen / zhong_wen) * 420# print(now_pross)# 用进度条来显示下载进度fill_line = canvas.create_rectangle(1, 1.5, 0, 23, width=0, fill="green")canvas.coords(fill_line, (0, 0, now_pross, 60))window.update()fp.write(chunk)lable1_4 = Label(window, text="100%", font=('微软雅黑', 15), fg='black', bg="green")lable1_4.place(x=300, y=160)time.sleep(1)tkinter.messagebox.showinfo(title='操作结果', message='文件下载完成')else:print("1")def thread_it(func):'''将函数打包进线程'''# 创建t = threading.Thread(target=func)# 守护 !!!t.setDaemon(True)# 启动t.start()# 阻塞--卡死界面!# t.join()

函数写完后设计python的GUI界面:

# 布置界面
window = Tk()
window.title("博主的下载软件")
window.geometry("600x265+490+250")
window.config(bg="#FAFAFA")
# 设置窗口是否可以变化长宽,默认可变
window.resizable(width=False, height=False)lable1_1 = Label(window, text='下载文件: ', font=('微软雅黑', 20), fg='blue', bg="#FAFAFA")
lable1_1.place(x=20, y=20)lable1_2 = Label(window, text="安装目录:", font=('微软雅黑', 20), fg='blue', bg="#FAFAFA")
lable1_2.place(x=20, y=72)# 进度条的实现
lable1_3 = Label(text="下载进度:", font=('微软雅黑', 20), bg="#FAFAFA", fg="blue")
lable1_3.place(x=20, y=122)
canvas = Canvas(window, width=420, height=25, bg="#FFF0F5")
canvas.place(x=150, y=130)entry_1 = Entry(window, font=('微软雅黑', 18), width=30, bg='white')
entry_1.place(x=150, y=30)entry_2 = Entry(window, font=('微软雅黑', 18), width=30, bg='white')
entry_2.place(x=150, y=80)button_1 = Button(window, text="下载", font=("隶书", 20), bg='Snow', activeforeground='gold', activebackground='green',fg="black", command=lambda: thread_it(get_zhu))
button_1.place(x=20, y=200, width=120)button_2 = Button(window, text="退出", font=("隶书", 20), bg='Snow', activeforeground='gold', activebackground='green',fg="black", command=window.quit)
button_2.place(x=450, y=200, width=120)button_3 = Button(window, text="...", font=("隶书", 15), bg='Snow', activeforeground='gold', activebackground='green',fg="black", command=get_wen)
button_3.place(x=535, y=80, width=40)button_4 = Button(window, text="复制", font=("隶书", 20), bg='Snow', activeforeground='gold', activebackground='green',fg="black", command= get_copy)
button_4.place(x=165, y=200, width=120)button_5 = Button(window, text="粘贴", font=("隶书", 20), bg='Snow', activeforeground='gold', activebackground='green',fg="black", command= get_paste)
button_5.place(x=310, y=200, width=120)window.mainloop()

代码到这里就结束了,这次的代码难度较高,有问题可以评论和私信博主解决哦,喜欢我的代码可以关注博主哦,我是活动的笑脸。

python3打造专属的下载软件相关推荐

  1. 用U盘打造专属个人的微型护航系统--winpe

    用U盘打造专属个人的微型护航系统--winpe 具体做法是: 1.准备材料:①老毛桃winpe操作系统  (原版大小仅为109.2M,后缀是ISO的) ②U盘 不用太大,120M就行,一般市面上的U盘 ...

  2. .net 集合分成几个等数量集合_如果不想下载软件,那就看一下这几个网站吧

    通常来说,就算不是做设计的人,平时也需要用到一些软件来进行辅助工作 比如说平时的证件照换底色.识别图片上的文字等等,对我来说下载一个新的软件真的是挺让人烦的 所以如果你不想下载软件的话,可以看一下下面 ...

  3. python tkinter下载器_下载小说还要去找网站?Python使用tkinter打造一个小说下载器...

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

  4. 腾讯会议开放API接口,为企业打造专属的“腾讯会议”

    远程办公需求在疫情期间爆发,推动各行各业加速企业内外部协同效率的数字化改造.基于这样的背景,腾讯会议宣布开放API接口,无论是企业IT.系统集成商.SaaS服务商,均可轻松适配多种会议场景需求,同时还 ...

  5. python3.7官网下载步骤_python下载(python官网下载步骤)

    1.打开官方网站,光标移到Downloads,选择windows 2.2018年2月28日,python发布了3.7版本.根据不同的操作系统,选择不同版本的安装包.每一个版本提供了三个下载链接,依次是 ...

  6. B站视频下载软件分享

    B站视频下载软件分享 首先浏览器搜索https://www.bilibili.com,看着看着突然发现了一个非常好看的视频,特别想下载下来留存着,怎么办? 用它 第一步:打开软件 第二步:设置视频下载 ...

  7. python 小说下载工具_使用tkinter打造一个小说下载器,想看什么小说,就下什么...

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

  8. MIUI国际/欧版使用小米应用商店/国内浏览器-解决不会下载软件/上网问题

    MIUI国际版/欧版系统十分简洁,并且内置软件和大陆全部不同,导致新手使用门槛很高 最常见的就是手机上网和软件下载这2大问题.国际版预装的是Googlplay商店,想要下载 软件必须在手机上登录后,才 ...

  9. [Windows] 电脑专属后花园 HideUL软件隐藏工具v1.0便携版

    如下图所示:这一堆乱七八糟的东西,看起来又特难受-- 下载:https://download.csdn.net/download/mo3408/87961003 更有甚者,如果我们在电脑安装了一些比较 ...

  10. 开源命令行音乐搜索下载软件

    起因 今天无意间看到这条新闻,听说已经共享了99%的乐库.于是屁颠屁颠的打开网易云,搜索了前段时间很火的体面,然而,依旧没有于文文版的,很多经典的粤语歌也没得听.于是就有了这个小工具-SDMUSIC. ...

最新文章

  1. using 的三种用法
  2. 动态切换站点样式(换皮肤)
  3. 浅谈云服务器都能用来做什么?
  4. linux安装joomla,安装Joomla
  5. hibernate mysql 性能_MyBatis和Hibernate相比,优势在哪里?
  6. mongodb spring 超时时间_mongoDB(spring 部分配置)
  7. SpringBoot第八篇:整合MyBatis-Generator
  8. java编码问题汇总
  9. CodeForces - 1612A Distance
  10. 手机登入注册为什么出现这个错误?
  11. java 1.6 jre 下载_jre1.6下载-Java环境 官方版 - 安下载
  12. 优盘中发现计算机病毒怎么办,u盘插电脑中了病毒怎么办
  13. css border属性简写
  14. easy_install安装,更新模块 python
  15. 老九学堂 学习 C++ 第五天
  16. 20190918CF训练
  17. 单片机串口连接电脑,USB转TTL线的使用
  18. fme转换shp面文件到cad自定义填充图案
  19. 红帽linux竞赛,浅谈红帽linux挑战赛(三)
  20. Pr 入门教程:了解基本用户界面

热门文章

  1. cuda-gdb 调试python中的module/cu文件
  2. VUE实现输入完当前input后自动跳到下一个input
  3. 提取Python stringlib中的BMHBNFS字符串查找算法
  4. linux raid类型,Linux学习笔记:RAID种类
  5. android studio 自动实现方法,Android Studio怎么自动实现所有的接口函数
  6. 小飞机安卓android手机设置教程,全民飞机大战叉叉助手安卓版设置步骤教程详解...
  7. go并发编程之美(二)、go内存模型
  8. C++,Java,Pathy这几种编程语言的区别
  9. Windows程序设计的第一个实例
  10. 大学数学视频教程整理