Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from PyQt4.QtCore import *
- from PyQt4.QtGui import *
- from PyQt4 import QtGui,QtCore
- import psycopg2
- class MyWindow(QWidget):
- def __init__(self):
- QWidget.__init__(self)
- # create table
- self.get_table_data()
- self.table = self.createTable()
- # layout
- self.layout = QVBoxLayout()
- self.initClasses()
- #self.testButton = QPushButton("test")
- self.setWindowTitle("Inventaire")
- #Main Size
- screen = QtGui.QDesktopWidget().screenGeometry()
- self.showMaximized()
- #self.layout.addWidget(self.testButton)
- self.layout.addWidget(self.groupBox1) # add widget
- self.layout.addWidget(self.labelGroup1_ShotInfo) # add widget
- # set my layout to make sure contents are correctly rendered
- self.setLayout(self.layout)
- self.layout.addWidget(self.table)
- #self.setLayout(self.layout)
- def initClasses(self):
- # GroupBox
- self.groupBox1 = GroupBox(self, QRect(20, 10, 180, 131), 'Shot Info')
- # Label
- self.labelGroup1_ShotInfo = Label(self, QRect(20, 40, 40, 15), 'Film')
- def get_table_data(self):
- conn = psycopg2.connect(database="sammy", user="postgres", password="a", host="localhost", port="5432")
- cur = conn.cursor()
- cur.execute("SELECT * from conn")
- self.tabledata = cur.fetchall()
- def createTable(self):
- # create the view
- tv = QTableView()
- # set the table model
- header = ['id', 'nom', 'password']
- tablemodel = MyTableModel(self.tabledata, header, self)
- tv.setModel(tablemodel)
- # set the minimum size
- tv.setMinimumSize(400, 300)
- # hide grid
- tv.setShowGrid(False)
- # hide vertical header
- vh = tv.verticalHeader()
- vh.setVisible(False)
- # set horizontal header properties
- hh = tv.horizontalHeader()
- hh.setStretchLastSection(True)
- # set column width to fit contents
- tv.resizeColumnsToContents()
- # set row height
- tv.resizeRowsToContents()
- # enable sorting
- tv.setSortingEnabled(False)
- #postion de Qtable
- tv.setMaximumSize(5,5)
- #test
- tv.setGeometry(50,50,50,50)
- return tv
- class GroupBox(QWidget):
- def __init__(self, parent, geo, title):
- QWidget.__init__(self, parent)
- obj = QGroupBox(parent)
- obj.setGeometry(geo)
- obj.setTitle(title)
- class Label(QWidget):
- def __init__(self, parent, geo, text):
- QWidget.__init__(self, parent)
- obj = QLabel(parent)
- obj.setGeometry(geo)
- obj.setText(text)
- class MyTableModel(QAbstractTableModel):
- def __init__(self, datain, headerdata, parent=None):
- """
- Args:
- datain: a list of listsn
- headerdata: a list of strings
- """
- QAbstractTableModel.__init__(self, parent)
- self.arraydata = datain
- self.headerdata = headerdata
- def rowCount(self, parent):
- return len(self.arraydata)
- def columnCount(self, parent):
- if len(self.arraydata) > 0:
- return len(self.arraydata[0])
- return 0
- def data(self, index, role):
- if not index.isValide):
- return QVariant()
- elif role != Qt.DisplayRole:
- return QVariant()
- return QVariant(self.arraydata[index.row()][index.column()])
- def setData(self, index, value, role):
- pass # not sure what to put here
- def headerData(self, col, orientation, role):
- if orientation == Qt.Horizontal and role == Qt.DisplayRole:
- return QVariant(self.headerdata[col])
- return QVariant()
- def sort(self, Ncol, order):
- """
- Sort table by given column number.
- self.emit(SIGNAL("layoutAboutToBeChanged()"))
- self.arraydata = sorted(self.arraydata, key=operator.itemgetter(Ncol))
- if order == Qt.DescendingOrder:
- self.arraydata.reverse()
- self.emit(SIGNAL("layoutChanged()"))
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- w = MyWindow()
- w.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement