Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python - PyQt - QTable Widget - adding rows

i am new to PyQt and still bit confused anyhow. I have a text file structure like this:

  • Name Surname Telephone Email

Where spaces are actually tabs " \t " now when i read this file whit my method i wish to populate the QTable Widget.

My QTable Widget has 4 columns called Name, Surname, Telephone, Email now it has no rows but as I read lines from the file and split each line by tabulator I wish to add a new row that in each column contains whatever was in the line.

Could someone point me in the direction how to go about this because I cannot find a solution or a method offered by QTable Widget that allows you to this.

like image 929
Sterling Duchess Avatar asked Jan 08 '12 04:01

Sterling Duchess


1 Answers

When you want to populate QTableWidget, you need to set row and column counts before inserting data example in documentation (PySide documentation is better than PyQt). And you can't just insert text string separated by tabs into table, you need to prepare it yourself, and then populate table with QTableWidgetItem's by calling QTableWidget.setItem. It will look like this:

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)

I'm assuming that you have data file with your entries, and tableWidget is QTableWidget instance.

In this example file parsed by hand, but consider using standart csv module for this task.

like image 153
reclosedev Avatar answered Oct 10 '22 04:10

reclosedev