Форум программистов, компьютерный форум, киберфорум
Наши страницы

Python: GUI, графика

Войти
Регистрация
Восстановить пароль
 
zxbpouk
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 8
#1

Pyqt5 listWidget + bad Gugl - Python

19.02.2018, 23:23. Просмотров 149. Ответов 2
Метки нет (Все метки)

Приветствую!

Проблема заключается в том, чтобы создать делегата в котором можно отключать текст, оставляя на виду одну лишь иконку.
Была бы лишь эта проблема, горя бы не знал. Но по своей традиции, перерыл несколько десятков, или даже пару сотен сайтов по проблеме, но не обнаружил даже проблеска ответа.

Оказалось, что в интернете, в котором есть все, можно узнать все основное и только для чайников. А как прикрутить делегата к QListWidget, чтобы отображалась и иконка и текст - вот такой информации нет.

На Python я перешел недавно, поэтому нужны конкретные примеры. Весь Github перелопачивать смысла нет. В поисках эта конкретность теряется.

Где можно более подробно узнать про механизмы делегирование? Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2018, 23:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Pyqt5 listWidget + bad Gugl (Python):

Pyqt5 listWidget+checkbox - Python
Добрый день. Помогите разобраться. Создал лист с чекбоксами, заполнил его. Повешал событие на него При выборе значения, я...

PyQt5 - Python
В чем проблема? Обычный код с сайта https://pythonworld.ru/gui/pyqt5-firstprograms.html вроде бы все установил import sys from...

Не подключается PyQt5 - Python
Доброго времени суток. Что сделать с этой ошибкой? Попробовал установить модуль "window" - не помогло. В коде вроде всё правильно...

Установка PyQt5 - Python
Не могу установить PyQt5. Скачал с официального сайта и запустил файл "configure.py". Появилось и исчезло черное окно. Для выявления ошибки...

Книги по PyQt5 и Qt - Python
Посоветуйте книги по PyQt5 и Qt или какие-то уроки так хочу освоить графический интерфейс python3.5

Не работает PyQt5 - Python
Здравствуйте. Недавно обновлял python - удалил все, что связано с python и скачал новую версию с официального сайта. Установил python 3,...

2
alex925
2619 / 2270 / 540
Регистрация: 19.03.2012
Сообщений: 8,815
20.02.2018, 21:18 #2
zxbpouk, вариант с передачей пустой строки при добавлении элемента не устраивает?
0
zxbpouk
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 8
24.02.2018, 19:26  [ТС] #3
Спасибо. Не совсем устраивают пустые кавычки. Покопался интенсивнее - нашел решение проблемы. Получилось, что и делегат не нужен. У одного китайца нашел код модели, которая хорошо решает мою проблему. Отказался от QListWidget в пользу QListView.


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class UserModel(QAbstractListModel):
    def __init__(self, data=None, parent=None):
        QAbstractListModel.__init__(self, parent)
        self._data = data
 
    def rowCount(self, parent=None, *args, **kwargs):
        return len(self._data)
 
    def data(self, QModelIndex, role=None):
        item = self._data[QModelIndex.row()]
 
        if role == Qt.DisplayRole:
            return "%s" % (item['name'])
        elif role == Qt.DecorationRole:
            return QColor(item['color'])
        elif role == Qt.BackgroundRole:
            return QBrush(Qt.Dense7Pattern)
        elif role == Qt.ToolTipRole:
            return "Tool Tip: %s" % (item['name'])
        return QVariant()
Модель подключается в MainWindow:

Python
1
2
3
4
5
6
7
8
9
        fruits = [
            {"name": "banana", "color": "yellow", "bg_color": "yellow"},
            {"name": "apple", "color": "red", "bg_color": "red"},
            {"name": "pear", "color": "green", "bg_color": "gray"},
        ]
 
        view = QListView(self)
        model = UserModel(fruits)
        view.setModel(model)
Но, поскольку мне нужно визуализировать список файлов, то класс UserModel немного подстроил под свои нужды.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class UserModel(QAbstractListModel):
 
    def __init__(self, dirs, data=None, parent=None):
        QAbstractListModel.__init__(self, parent)
        self._data = data
        self.dirs =dirs +"/"
    
 
    def rowCount(self, parent=None, *args, **kwargs):
 
        return len(self._data)
 
    def data(self, QModelIndex, role=None):
 
        item = self._data[QModelIndex.row()]
 
#        if role == Qt.DisplayRole: 
#            return "%s" % item
 
        if role == Qt.DecorationRole:
            return QPixmap(self.dirs + item).scaledToHeight(120)
        elif role == Qt.ToolTipRole:
            return item
        return QVariant()
 
    def flags(self, QModelIndex):
 
        return Qt.ItemIsEditable | Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsTristate
 
    def setData(self, QModelIndex, value, role=None):
 
        self._data[QModelIndex.row()]['name'] = value
        return True
DisplayRole убрал, поскольку DisplayRole выводит текст. Добавил в класс переменную dirs. Текст отобразил во всплывающих подсказках. Подключаюсь таким образом:

Python
1
2
3
4
5
6
7
8
9
        startingDir = '/home/user/Image' 
        directory = QFileDialog.getExistingDirectory(None, 
                                                         'Open working directory', 
                                                         startingDir, 
                                                         QFileDialog.ShowDirsOnly)
 
        files = os.listdir(directory) 
        model = UserModel(directory, files,  )
        self.listView.setModel(model)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2018, 19:26
Привет! Вот еще темы с ответами:

PyQt5 ошибка - Python
PyQt5 установлен, но происходит эта ошибка.

PyQt5 Pyqt5 потоки - Python
Здравствуйте, пишу программу для винды. Собственно ничего особенного, кликает по заранее заданным координатам и выполняет ряд функций....

Установка PyQt5 - Python
Всем привет. У меня стоит Ubuntu 14.04, решил установить PyQt5. Скачал исходники с официального сайта, скачал там же SIP, скомпилировал,...

PyQt5 установка - Python
взял вот эту инструкцию https://www.riverbankcomputing.com/software/pyqt/download5 скачал версию для винды. получил кучу файликов на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru