Python - PyQt - QTable Widget - добавяне на редове

аз съм нов в PyQt и все още съм малко объркан. Имам структура на текстов файл като тази:

  • Име Фамилия Телефон Имейл

Където интервалите всъщност са раздели " \t " сега, когато чета този файл с моя метод, искам да попълня QTable Widget.

Моят QTable Widget има 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