1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| #!/usr/bin/python
# -*- coding: utf-8 -*-
# Python 3, PyQt5
import sys
import os
from PyQt5 import QtCore, QtGui, QtWidgets
#############################################################################
def setCase(table, row, col, val, font=None):
"""Met la chaine val dans la case [row, col] de la table QTableWidget
avec si nécessaire la police de caractères "font"
Initialise la case avec un QTableWidgetItem si elle est vide
"""
item = table.item(row, col)
if item == None:
# la case est vide: on lui met un QTableWidgetItem
item = QtWidgets.QTableWidgetItem()
table.setItem(row, col, item)
if font!=None:
item.setFont(font)
item.setText(val)
#############################################################################
def getCase(table, row, col):
"""Retourne la chaine de la case [row, col] de la table QTableWidget
Renvoie None si la case n'a jamais été initialisée
"""
item = table.item(row, col)
if item == None:
return None # la case n'est pas initialisée
return item.text()
#############################################################################
class MyTableWidget(QtWidgets.QTableWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.resize(550,200)
nblig, nbcol = 5, 5
self.setRowCount(nblig)
self.setColumnCount(nbcol)
font = QtGui.QFont()
font.setItalic(True)
for i in range(0, nblig):
for j in range(0, nbcol):
setCase(self, i, j, "case %d,%d" % (i, j), font)
print(getCase(self, i, j))
#############################################################################
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = MyTableWidget()
window.show()
sys.exit(app.exec_()) |