Как получить значения элементов из QListView в pyqt5?

После подключения к моей БД я пытаюсь получить все значения элементов из QListView. но у него нет метода text() или чего-то еще, что я пытался использовать model.data(), но он возвращает следующую ошибку:

Файл "c:\Users\inter\Desktop\neosun\main copy 9.py", строка 88, в добавить в плейлист item = model.data(index, 1, Qt.DisplayRole) TypeError: data(self, QModelIndex, role: int = Qt.DisplayRole): аргумент 1 имеет непредвиденное введите «целое число»

class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setGeometry(900,180,800,600)
        self.setWindowTitle("Media Display")
        self.setWindowIcon(QIcon('favicon.png'))
        self.model = QSqlQueryModel()
        self.model.setQuery("SELECT path FROM files")
        
        self.listview = QListView()
        self.listview.setModel(self.model)
        self.listview.setModelColumn(1)    
        self.getData()

    
    def getData(self):
        model = self.listview.model()
        for index in range(model.rowCount()):
            # item = model.data(index)
            item = model.data(index, 1, Qt.DisplayRole)
            print(item)
    
 

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

user14757127 10.12.2020 12:26
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
2 193
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Qt использует класс QModelIndex для поиска данных в любой модели, поэтому вы не можете просто использовать целые числа для доступа к ним, но вместо этого необходимо использовать model.index(row, column, parent=None) (необязательный родительский аргумент предназначен для многомерных моделей, таких как модели дерева).

    def getData(self):
        model = self.listview.model()
        for row in range(model.rowCount()):
            index = model.index(row, 1)
            item = model.data(index, Qt.DisplayRole)
            print(item)

Большое спасибо, это работает, только в индексе столбец равен 0, потому что я установил для столбца модели значение 1.

miyou995 10.12.2020 13:01

Вы установили столбец модели, который отображается в представлении, но структура модели не изменилась. В своем вопросе вы пытались получить данные из второго столбца (1), поэтому я просто использовал это значение на основе вашего кода.

musicamante 10.12.2020 13:39

Другие вопросы по теме