Уведомления

Группа в Telegram: @pythonsu

#1 Март 8, 2016 15:44:33

aiscy
Зарегистрирован: 2015-06-17
Сообщения: 52
Репутация: +  9  -
Профиль   Отправить e-mail  

Прошу помощи со списком в Pyqt5

Здравствуйте!

Пытаюсь сделать приложение на pyqt5 для работы с yandex disk rest api, все было отлично, пока не наступила пора реализовывать виджет в виде списка со статусом загрузки файлов.

За основу взял этот интерфейс:


Как я понял, подобный список можно реализовать через QListWidget и вложить в него QListWidgetItem с QWidget, но не могу понять, как потом изменить один из элементов этого списка, чтобы, например, обновить прогресс бар.

Для обработки и загрузки каждого файла использую такого воркера:

class WorkerYandexUpload(QRunnable):
    def run(self):
        ...
        m = MultipartEncoderMonitor.from_fields(fields={'file': (open(self.file_path, 'rb'))}, callback=self.upload_callback)
        r = requests.post('http://httpbin.org/post', data=m, headers={'Content-Type': m.content_type})
    def upload_callback(self, m):
        self.signals.test_sign.emit(m.bytes_read)

Отредактировано aiscy (Март 8, 2016 18:12:59)

Офлайн

#2 Март 8, 2016 18:45:04

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Прошу помощи со списком в Pyqt5

Как по мне, так тут было бы правильней сделать кастомный контрол, который объединил бы в себе прогрессбар, надпись, иконку и кнопки, а потом этот контрол использовать в VerticalLoyout. А список тут не нужен.



Офлайн

#3 Март 9, 2016 01:56:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Прошу помощи со списком в Pyqt5

FishHook
а потом этот контрол использовать в VerticalLoyout. А список тут не нужен.
Если они должны добавляться/исчезать до/после закачки, то нужен список. Его легко редактировать.

aiscy
Как я понял, подобный список можно реализовать через QListWidget и вложить в него QListWidgetItem с QWidget, но не могу понять, как потом изменить один из элементов этого списка, чтобы, например, обновить прогресс бар.
Можешь, без моделей, конечно, сделать это наскоряк (иначе увязнешь в них). А изменить - через систему сигналов и слотов. Обычно и то, и другое уже есть и создавать ничего не надо. Просто надо соединить через connect().



Отредактировано py.user.next (Март 9, 2016 13:19:05)

Офлайн

#4 Март 9, 2016 10:28:23

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2751
Репутация: +  184  -
Профиль   Отправить e-mail  

Прошу помощи со списком в Pyqt5

Вот пример того как это делается через модель/представление. https://habrahabr.ru/post/134802/
Если можешь только через QListWidget, то сделай 2 отдельных виджета (для загружаемых и загруженных файлов) с интерфейсом для получения данных.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version