Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import threading
- import tkinter as tk
- from tkinter import ttk
- from urllib.request import urlopen
- def download_file_worker():
- url = "https://www.python.org/ftp/python/3.7.2/python-3.7.2.exe"
- filename = "python-3.7.2.exe"
- # Открываем адрес URL.
- with urlopen(url) as r:
- with open(filename, "wb") as f:
- # Чтение удаленного файла и запись локального файла.
- f.write(r.read())
- def schedule_check(t):
- """
- Планирование выполнения функции `check_if_done()` в течение одной секунды.
- """
- root.after(1000, check_if_done, t)
- def check_if_done(t):
- # Если поток закончился, сбросим кнопку и выведем сообщение.
- if not t.is_alive():
- info_label["text"] = "Файл загружен!"
- # Сброс кнопки.
- download_button["state"] = "normal"
- else:
- # Если нет, проверим еще раз через некоторое время.
- schedule_check(t)
- def download_file():
- info_label["text"] = "Загрузка файла..."
- # Отключение кнопки на время загрузки файла.
- download_button["state"] = "disabled"
- # Запустим загрузку в новом потоке.
- t = threading.Thread(target=download_file_worker)
- t.start()
- # Начнем периодически проверять, закончился ли поток.
- schedule_check(t)
- root = tk.Tk()
- root.title("Загрузка файла с помощью Tcl/Tk")
- info_label = ttk.Label(text="Нажмите кнопку , чтобы загрузить файл.")
- info_label.pack()
- download_button = ttk.Button(text="Скачать файл", command=download_file)
- download_button.pack()
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement