Рубрики
Без рубрики

wxpython: Создание приложения для загрузки файлов

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Я думал о создании простого загрузки сценария с WxPython на некоторое время. Тогда я видел кого-то на Stackoverflow Спрашиваю о том, как это сделать, и я решил, что пришло время понять это. Загрузка файла с Python Trivial. Я написал о нескольких разных способах сделать это в Предыдущая статья Отказ Большой вопрос был, как это сделать таким образом, чтобы я мог обновить пользовательский интерфейс, поскольку файл загружал. На самом деле довольно легко, и эта статья покажет вам, как!

Начиная

Сценарий в этой статье потребует от вас 3-й партий Запросы пакета установлены. Вам также понадобится wxpython, конечно. Я буду использовать Wxpython 2.9 в этой статье.

Дайвинг в

Я оказался несколько моих предыдущих статей и бит бит бит, до тех пор, пока не получил то, что я хотел. Я всегда нахожу ныряю в код, самый быстрый способ увидеть, как делать вещи, поэтому давайте посмотрим на Источник:

Давайте возьмем этот код частью часть и штука, чтобы облегчить объяснение. Во-первых, мы должны подкласс Нить класс следующим образом:

Мы проходим в номере датчика (GNUM), URL для загрузки и размера файла. Причина, по которой мы проходим в калибровочном номере, заключается в том, что каждый калибровочный экземпляр должен быть способен обновлять независимо от других датчиков, поэтому нам нужно отслеживать какого датчика, который нам нужно обновить. В Беги Метод, мы проверяем и посмотрим, существует ли имя файла. Если это так, мы пытаемся добавить номер к нему и проверьте, существует ли этот файл и т. Д. Как только мы найдем имя файла, которое не существует, мы продолжаем и скажу Запросы Чтобы загрузить файл в виде потока. Затем мы снимаем байт за раз, напишите его на диск и сообщите дисплею обновить. Как только мы выпадаем из для Цикл, который вытягивает файл вниз, мы отправляем последнее обновление датчика, чтобы сказать ему, что это делается загрузка.

Далее мы должны подкласс wx.gauge:

Это довольно просто. Мы просто подкласс wx.gauge и настроили абонент Pubsub, поэтому он слушает обновления только для себя. Затем мы добавляем метод под названием ОбновлениеProgress Что мы будем позвонить всякий раз, когда слушатель пожали, чтобы на самом деле обновить виджет датчика. Теперь мы готовы посмотреть код панели:

Для панели я решил пойти с ScrolledPanel Виджет, потому что я подумал, что я мог бы захотеть скачать кучу файлов, и было бы неплохо, если бы моя скачанная добавлена ​​прокрутка, если датчики не хватают пространства. Мы настроили виджеты и сизеры в __init__ метод как обычно. ondownload Метод – это то, где действие на. Здесь мы снимаем URL из текста управления и попытайтесь получить размер файла с сервера с помощью пакета запросов. Мы разделяем на 1024, чтобы получить размер килобайта. Если это успешно, мы создаем горизонтальную коробку Sizer и добавить статический текст и датчик к нему. Обратите внимание, что мы говорим датчик, который загружается, и мы также передаем это число в новую нить. Мы также сбрасываем элемент управления текстом, чтобы облегчить добавить новый URL. Наконец, мы увеличиваем номер загрузки, поэтому мы будем готовы загрузить новый файл.

Остальная часть кода довольно большая котельная.

Упаковка

Как видите, этот код был довольно простым, чтобы собрать вместе. Я могу увидеть многое, чтобы улучшить, хотя. Например, было бы хорошо, если бы приложение имело возможность изменить, где загрузки в конечном итоге. В настоящее время они просто сохраняются в той же папке, что и скрипт. В Retrospect он должен добавить новые загрузки наверх и подтолкнуть более старые вниз вместо вице-версий. Было бы здорово показать фактический размер файла и сколько осталось. Мы могли бы даже добавить вкладку для файлов, которые закончили загрузку! Во всяком случае, я надеюсь, что это дает вам несколько веселых идей для того, что вы могли бы сделать, чтобы улучшить сценарий.

Связанное чтение