使用Python 3和Tkinter制作GUI文件下载器

时间:2018-09-12 20:39:50

标签: python python-3.x user-interface tkinter

(如果对任何人都重要,我正在使用python 3.6.6)

我正在为当前处于私有Alpha并不断更新的游戏制作GUI安装程序。

我已经制作了一个控制台版本:

from tqdm import tqdm
import requests, os, sys, zipfile, shutil, subprocess

chunk_size = 1024
url = "{LINK TO FILE YOU WANT TO DOWNLOAD}"
r = requests.get(url, stream = True)
total_size = int(r.headers['content-length'])


print("Are you sure you want to download the newest version of RFMP?")
print("y/n", end=': ')

answer = input()

while True:
    if answer == 'y':
        if os.path.exists("RFMB6_WINDOWS"):
            print('')
            print('')
            print('Removing old RFMP files...')
            subprocess.check_call(('attrib -R ' + 'RFMB6_WINDOWS' + '\\* /S').split())
            shutil.rmtree('RFMB6_WINDOWS')
            print('')
            print('Removed old files.')
            break
        else:
            break
    elif answer == 'n':
         sys.exit()

    else:
         print("That is not a valid answer, please answer with y/n.")
         answer = input()


print('')
print('')
print('Downloading:')
with open('RFMB6_WINDOWS.zip', 'wb') as f:
    for data in tqdm(iterable = r.iter_content(chunk_size = chunk_size), total = total_size/chunk_size, unit = 'KB'):
             f.write(data)
print('')
print("Download Complete.")
print('')
print('')

print("Would you like to extract it?")
print("y/n", end=': ')
answer2 = input()

while True:
    if answer2 == 'y':
            print('')
            print('')
            print('Extracting...')
            zip_ref = zipfile.ZipFile("RFMB6_WINDOWS.zip", 'r')
            zip_ref.extractall("RFMB6_WINDOWS")
            zip_ref.close()
            print('')
            print('Extraction Complete')
            print('')
            print('')
            print('Cleaning up...')
            os.remove("RFMB6_WINDOWS.zip")
            print('')
            print('Done! You have succesfully installed the newest version of the Ravenfield Multiplayer Private Alpha.')
            break   
    elif answer2 == 'n':
            print('')
            print('Done! You have succesfully downloaded the newest Zip of the Ravenfield Multiplayer Private Alpha.')
            break
    else:
            print("That is not a valid answer, please answer with y/n.")
            answer = input()


os.system('pause')

我只会用它来下载1个特定的链接,因此请忽略url变量。

当我单击显示“下载”的按钮时,我试图制作一个执行相同操作的GUI。我想制作一个进度条,并创建一个文本框,告诉您发生了什么事,例如下载,解压缩等。我不需要目录选项。我只需要它就可以下载文件所在的位置,并删除仍然存在的旧文件。

这是我的问题:我如何学习如何做?我看过tkinter教程和其他问题,但是我只找到python 2的东西或要开发用于修改和调用自己的工作的东西。我正在寻找的链接和/或示例可以告诉我如何去创建这样的东西。预先感谢任何帮助我的人。

P.S。在编码方面,我是一个菜鸟,所以无论您如何解释,都请彻底进行。

P.S.S。为了运行控制台应用程序,您需要通过终端运行它,并在'url'变量中添加自己的链接。

2 个答案:

答案 0 :(得分:1)

看看PySimpleGUI。您可以使用下载按钮,输出窗口和进度栏轻松构建布局。如果遇到麻烦,请停在GitHub上并发布问题。

答案 1 :(得分:0)