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
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
from datetime import date
class MainWidget(QtGui.QWidget):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.model = QtGui.QStandardItemModel()
self.view = QtGui.QTableView()
self.setmodelHeaders([u'Numéro',u'Nom',u'Date de\n naissance'])
self.setmodelData([
[1,'Lagaffe',date(1963,5,9)],
[2,'Bertrand',date(1984,8,5)],
[3,'Carvac',date(1978,4,2)]])
self.view.setModel(self.model)
self.view.setMinimumSize(350,100)
self.setviewproperties()
lay = QtGui.QGridLayout(self)
lay.addWidget(self.view,3,0,3,1)
self.disp = QtGui.QLabel('')
lay.addWidget(self.disp,4,0,4,1)
self.view.clicked.connect(self.dispLine)
self.setLayout(lay)
def setmodelHeaders(self,headers):
for j,header in enumerate(headers):
pi = QtGui.QStandardItem(header)
self.model.setHorizontalHeaderItem(j, pi)
def setmodelData(self,data):
for i,row in enumerate(data):
for j,col in enumerate(row):
item = QtGui.QStandardItem()
item.setTextAlignment(QtCore.Qt.AlignHCenter)
item.setEditable(False)
if isinstance(col,date): col = QtCore.QDate(col)
item.setData(col,QtCore.Qt.DisplayRole)
self.model.setItem(i,j,item)
def setviewproperties(self):
self.view.setSelectionMode(1) # Sélection unique
self.view.setSelectionBehavior(1) # Sélectionb de ligne
self.view.setWordWrap(True)
def dispLine(self,index):
self.disp.setText("Ligne cliquée %d" %index.row())
if __name__== "__main__":
app = QtGui.QApplication(sys.argv)
w = MainWidget()
w.show()
sys.exit(app.exec_()) |
Partager