Найти - Пользователи
Полная версия: Прошу помощи со списком в Pyqt5
Начало » GUI » Прошу помощи со списком в Pyqt5
1
aiscy
Здравствуйте!

Пытаюсь сделать приложение на 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)
FishHook
Как по мне, так тут было бы правильней сделать кастомный контрол, который объединил бы в себе прогрессбар, надпись, иконку и кнопки, а потом этот контрол использовать в VerticalLoyout. А список тут не нужен.
py.user.next
FishHook
а потом этот контрол использовать в VerticalLoyout. А список тут не нужен.
Если они должны добавляться/исчезать до/после закачки, то нужен список. Его легко редактировать.

aiscy
Как я понял, подобный список можно реализовать через QListWidget и вложить в него QListWidgetItem с QWidget, но не могу понять, как потом изменить один из элементов этого списка, чтобы, например, обновить прогресс бар.
Можешь, без моделей, конечно, сделать это наскоряк (иначе увязнешь в них). А изменить - через систему сигналов и слотов. Обычно и то, и другое уже есть и создавать ничего не надо. Просто надо соединить через connect().
Rodegast
Вот пример того как это делается через модель/представление. https://habrahabr.ru/post/134802/
Если можешь только через QListWidget, то сделай 2 отдельных виджета (для загружаемых и загруженных файлов) с интерфейсом для получения данных.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB