Python — PyQt — виджет QTable — добавление строк

я новичок в PyQt и все еще немного запутался. У меня есть такая структура текстового файла:

  • Имя Фамилия Телефон Электронная почта

Где пробелы на самом деле являются вкладками " \t ", теперь, когда я читаю этот файл с помощью своего метода, я хочу заполнить виджет QTable.

Мой виджет QTable имеет 4 столбца с именами Name, Surname, Telephone, Email, теперь у него нет строк, но когда я читаю строки из файла и разделяю каждую строку табулятором, я хочу добавить новую строку, которая в каждом столбце содержит все, что было в строке .

Может ли кто-нибудь указать мне, как это сделать, потому что я не могу найти решение или метод, предлагаемый QTable Widget, который позволяет вам это сделать.


person Sterling Duchess    schedule 08.01.2012    source источник


Ответы (1)


Если вы хотите заполнить QTableWidget, вам необходимо установить количество строк и столбцов перед вставкой данных пример в документации (документация PySide лучше, чем PyQt). И вы не можете просто вставить текстовую строку, разделенную табуляцией, в таблицу, вам нужно подготовить ее самостоятельно, а затем заполнить таблицу QTableWidgetItem, вызвав QTableWidget.setItem. Это будет выглядеть так:

entries = []
with open('data') as input:
    for line in input:
        entries.append(line.strip().split('\t'))

tableWidget.setRowCount(len(entries))
tableWidget.setColumnCount(len(entries[0]))

for i, row in enumerate(entries):
    for j, col in enumerate(row):
        item = QTableWidgetItem(col)
        tableWidget.setItem(i, j, item)

Я предполагаю, что у вас есть data файл с вашими записями, а tableWidget — это QTableWidget экземпляр.

В этом примере файл анализируется вручную, но рассмотрите возможность использования стандартного модуля csv для этой задачи.

person reclosedev    schedule 08.01.2012
comment
Спасибо за помощь. Я изменил свое приложение с графическим интерфейсом, где мой метод читает файл по строкам и добавляет строки в список, как вы. Большое спасибо. - person Sterling Duchess; 08.01.2012
comment
Для некоторых начинающих python, таких как я: я считаю, что для использования QTableWidgetItem вам нужно импортировать QtGui из PyQt4 (из PyQt4 импортировать QtCore, QyGui) и использовать QtGui.QTableWidgetItem вместо одного QTableWidgetItem. - person Léo Muniz; 13.03.2015