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
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
and a
using the
and
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
via the
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'))
my-courses.net