In this tutorial, we will learn how to use a table in our PyQt5 application using the QTableView widget. A table is an arrangement of data in rows and columns and widely used in communication, research and data analysis. We can add one or more tables in our PyQt application using QTableWidget. For a better understanding of the concept, we will take an example where we want to display the name and city of different people in a table in our application. We can extract the data from a database, a JSON file, or any other storage platform.

2 - Creation of a simple QTableWidget table PyQt5

In order to create a

QTableWidget

table, we must import the QTableWideget class and do an instantiation:

import sys 
from PyQt5.QtWidgets import QApplication, QWidget , QTableWidget , QTableWidgetItem

app = QApplication(sys.argv)
root = QWidget()
root.setWindowTitle("QTableView Example")
root.setGeometry(100 , 100 , 600 , 400)

# creating a QTableWidget
table = QTableWidget(root)
table.setRowCount(2)
table.setColumnCount(3)
table.setGeometry(50 , 50 , 350 , 150)

root.show()
sys.exit(app.exec_())

 
 
 

3 - Add a header to the QTableView PyQt5 table

You can also add a

horizontal header

and a

vertical header

using the

setHorizontalHeaderLabels()

and

setVerticalHeaderLabels()

methods

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem

app = QApplication(sys.argv)
root = QWidget()
root.setWindowTitle("Table Widget example !")
root.setGeometry(100 , 100 , 500 , 300)

# create a QTableWidget
table = QTableWidget(root)
table.setRowCount(2)
table.setColumnCount(3)
table.setGeometry(50 , 50 , 320 , 150)

# adding header to the table
headerH = ['ID' , 'Name' , 'email']
headerV = ['a' , 'b' ]
table.setHorizontalHeaderLabels(headerH)
table.setVerticalHeaderLabels(headerV)

root.show()
sys.exit(app.exec_())

4 - Adding data to the QTableView

We can also add

data

via the

setItem()

method:

setItem(row_number , column_number , QTableWidgetItem("element_to_add"))

Example

To add an element to the first row and first column we use the code:

table = QTableWidget(root)
setItem(0 , 0 , QTableWidgetItem("element"))

Example (adding a first line)

# adding a first row
table.setItem(0 , 0 , QTableWidgetItem(' 1'))
table.setItem(0 , 1 , QTableWidgetItem(' Albert Einstein'))
table.setItem(0 , 2 , QTableWidgetItem(' albert_einstein@gmail.com'))

 

 

Younes Derfoufi
my-courses.net

Leave a Reply