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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
import sys, uic
import re
import operator
import os
import MySQLdb as mdb
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import SIGNAL
from PyQt4.QtGui import QMainWindow
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from UI.UILOGIPHARM import Ui_LOGIPHARFMainWindow
from decimal import *
import datetime
class Logipharm(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.LOGIPHARM = Ui_LOGIPHARFMainWindow()
self.LOGIPHARM.setupUi(self)
self.LOGIPHARM.PasswordLineEdit.setEchoMode(QtGui.QLineEdit.Password)
self.LOGIPHARM.TableGroupBox.setVisible(False)
self.LOGIPHARM.ConnectionGroupBox.setVisible(True)
self.LOGIPHARM.centralwidget.connect(self.LOGIPHARM.DBConnectPushButton, SIGNAL("clicked()"), self.connectToDB)
def makeTableVisible(self):
self.LOGIPHARM.TableGroupBox.setVisible(True)
def connectToDB(self):
self.Server = str(self.LOGIPHARM.ServerComboBox.currentText())
self.DB = str(self.LOGIPHARM.DBComboBox.currentText())
self.Login = str(self.LOGIPHARM.LoginLineEdit.text())
self.PW = str(self.LOGIPHARM.PasswordLineEdit.text())
print self.Server, self.DB, self.Login, self.PW
try:
print ("Try to connect...")
self.DB = mdb.connect(self.Server, self.Login, self.PW, self.DB)
self.tableName ="medicamment"
records = Table(self.DB, self.tableName)
myData=[]
for i in range(len(records)):
myData.append(list(records[i]))
print myData
self.makeTableVisible()
header = ['designation', 'type','quantity', 'prix','date', 'nbr']
myModel = DBModel(myData,header)
self.LOGIPHARM.DBTableView.setModel(myModel)
self.LOGIPHARM.DBTableView.setSortingEnabled(True)
print("close connection")
self.DB.close()
except mdb.Error, e:
print "Connection failed %d: %s" % (e.args[0],e.args[1])
self.LOGIPHARM.ConnectionGroupBox.setVisible(True)
#sys.exit(1)
class Table:
def __init__(self, db, tableName):
self.db = db
self.tableName = tableName
self.dbc = self.db.cursor()
def __getitem__(self, item):
self.dbc.execute("select * from %s limit %s, 1" %(self.tableName, item))
return self.dbc.fetchone()
def __len__(self):
self.dbc.execute("select count(*) from %s" % (self.tableName))
l = int(self.dbc.fetchone()[0])
return l
class DBModel(QtCore.QAbstractTableModel):
def __init__(self, data, headerdata, parent=None):
QtCore.QAbstractTableModel.__init__(self, parent)
self.data = data
self.headerdata = headerdata
def rowCount(self,parent):
return len(self.data)
def columnCount(self, parent):
return len(self.data[0])
def data(self, index, role):
if not index.isValid():
return QVariant()
elif role != QtCore.Qt.DisplayRole:
return QVariant()
return QVariant(self.data[index.row()][index.column()])
def headerData(self, col, orientation, role):
if orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole:
return QVariant(self.headerdata[col])
return QVariant()
def sort(self, Ncol, order):
self.emit(SIGNAL("layoutAboutToBeChanged()"))
self.data = sorted(self.data, key=operator.itemgetter(Ncol))
if order == Qt.DescendingOrder:
self.data.reverse()
self.emit(SIGNAL("layoutChanged()"))
def flags(self, index):
return QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
LogipharmMainWindow = Logipharm()
LogipharmMainWindow.show()
sys.exit(app.exec_()) |
Partager