# inherit the main ui
"""
Inherited from the definition imported from Qt Designer / pyuic construct ThetaMat.ui
"""
def __init__(self):
self.ui = Ui_mainWindow()
self.ui.setupUi(self)
self.ui.statusbar.showMessage('Welcome')
self.setWindowState(QtCore.Qt.WindowMaximized)
self.ui.mdiArea.show()
self.setCentralWidget(self.ui.mdiArea)
# remember to setup slots / signals here
self.ui.actionAbout_ThetaMat.triggered.connect(self.myAbout)
self.ui.actionView_Current_List.triggered.connect(self.InvGrid)
def InvGrid(self):
# see if we already exist (prevents duplicate windows)
test
= self.
ui.
mdiArea.
findChild(QtGui.
QWidget,
'InvList')
if test:
print 'Raising existing Inventory List'
test.setFocus()
test.setWindowState(test.windowState() | QtCore.Qt.WindowMaximized)
else:
print 'Creating Inventory List'
# create a child window for the grid (need the 'X' in the corner!)
print 'creating sub window'
subWindow = QtGui.QMdiSubWindow(self.ui.mdiArea)
subWindow.setWindowTitle('Current Inventory')
print 'creating table'
# put a qtableview in the child window
invTable.setSortingEnabled(True)
invTable.setMinimumSize(800, 500)
invTable.setMaximumSize(16777215, 16777215)
invTable.setColumnWidth(0,80)
invTable.setColumnWidth(1,250)
invTable.setColumnWidth(2,40)
invTable.setColumnWidth(3,80)
invTable.setColumnWidth(4,45)
invTable.setColumnWidth(5,80)
invTable.setColumnWidth(6,80)
invTable.setColumnWidth(7,45)
# populate the grid
print 'populating table'
logindb = pyodbc.connect('DSN=MyDSN;PWD=MyPwd')
invcursor = logindb.cursor()
invcursor.execute('select count (*) from Inventory')
row = invcursor.fetchone()
totalrows = row[0]
print "Total rows in inventory = %i" %(int(totalrows))
invcursor.execute('select * from Inventory;')
currenttablerow = 0
for record in invcursor:
invModel.
setItem(currenttablerow,
0, QtGui.
QStandardItem(record
[0])) invModel.
setItem(currenttablerow,
1, QtGui.
QStandardItem(record
[1])) invModel.
setItem(currenttablerow,
2, QtGui.
QStandardItem(str
(record
[2]))) invModel.
setItem(currenttablerow,
3, QtGui.
QStandardItem(record
[3])) invModel.
setItem(currenttablerow,
4, QtGui.
QStandardItem(str
(record
[4]))) invModel.
setItem(currenttablerow,
5, QtGui.
QStandardItem(record
[5])) invModel.
setItem(currenttablerow,
6, QtGui.
QStandardItem(record
[6])) invModel.
setItem(currenttablerow,
7, QtGui.
QStandardItem(record
[7])) currenttablerow += 1
invModel.setHeaderData(0, QtCore.Qt.Horizontal, 'Category', role=QtCore.Qt.DisplayRole)
invModel.setHeaderData(1, QtCore.Qt.Horizontal, 'Item Description', role=QtCore.Qt.DisplayRole)
invModel.setHeaderData(2, QtCore.Qt.Horizontal, 'Tray #', role=QtCore.Qt.DisplayRole)
invModel.setHeaderData(3, QtCore.Qt.Horizontal, 'Parent Item', role=QtCore.Qt.DisplayRole)
invModel.setHeaderData(4, QtCore.Qt.Horizontal, 'Weight', role=QtCore.Qt.DisplayRole)
invModel.setHeaderData(5, QtCore.Qt.Horizontal, 'Dimension', role=QtCore.Qt.DisplayRole)
invModel.setHeaderData(6, QtCore.Qt.Horizontal, 'Detail #', role=QtCore.Qt.DisplayRole)
invModel.setHeaderData(7, QtCore.Qt.Horizontal, 'Material', role=QtCore.Qt.DisplayRole)
invHeader = invTable.horizontalHeader()
print'updating status bar'
self.ui.statusbar.showMessage('Displaying Active Inventory')
invTable.setModel(invModel)
invHeader.setStretchLastSection(True)
print 'show tableWidget'
# update the list
subWindow.setObjectName('InvList')
subWindow.setWidget(invTable)
subWindow.showMaximized()