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
   |  
import os
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtSql import *
from PyQt4.Qt import *
 
 
NUMMANIP, NOMS, REFCAHIER, TAILLE, NBITER, PCIBLE, FENETRE, COLLIMATEUR, ENERGIE, FAISCEAU, COMPTEUR, OBJECTIF, COMMENTAIRE, MODE = range(14)
 
class ManipDlg(QDialog):
 
    def __init__(self):
        super(ManipDlg, self).__init__()
 
        self.db = None
        self.manipView = QTableView()
        self.openDatabase()
 
        buttonsBox = QDialogButtonBox()
        addButton = buttonsBox.addButton("Ajouter", QDialogButtonBox.ActionRole)
        deleteButton = buttonsBox.addButton("Supprimer", QDialogButtonBox.ActionRole)
 
 
        layout = QVBoxLayout()
        layout.addWidget(self.manipView)
        layout.addWidget(buttonsBox)
        self.setLayout(layout)
 
    def openDatabase(self):
 
        if self.db:
            self.closeDatabase()
 
        self.db = QSqlDatabase.addDatabase("QMYSQL")
        self.db.setHostName("host")
        self.db.setUserName("root")
        self.db.setPassword("xxxx")
        self.db.setDatabaseName("DiamTestAnalyse_db")
 
        if not self.db.open():
            QMessageBox.warning(None, "Reference Data",
                "Database Error: {}".format(self.db.lastError().text()))
            sys.exit(1)
 
        self.manipModel = QSqlRelationalTableModel(self)
        self.manipModel.setTable("manip")
        self.manipModel.setSort(NUMMANIP, Qt.DescendingOrder)
        self.manipModel.setHeaderData(NUMMANIP, Qt.Horizontal, QVariant("numManip"))
        self.manipModel.setHeaderData(NOMS, Qt.Horizontal, QVariant("noms"))
        self.manipModel.setHeaderData(REFCAHIER, Qt.Horizontal, QVariant("refCahier"))
        self.manipModel.setHeaderData(TAILLE, Qt.Horizontal, QVariant("taille"))
        self.manipModel.setHeaderData(NBITER, Qt.Horizontal, QVariant("nbIter"))
        self.manipModel.setHeaderData(PCIBLE, Qt.Horizontal, QVariant("Pcible"))
        self.manipModel.setHeaderData(FENETRE, Qt.Horizontal, QVariant("fenetre"))
        self.manipModel.setHeaderData(COLLIMATEUR, Qt.Horizontal, QVariant("collimateur"))
        self.manipModel.setHeaderData(ENERGIE, Qt.Horizontal, QVariant("energie"))
        self.manipModel.setHeaderData(FAISCEAU, Qt.Horizontal, QVariant("faisceau"))
        self.manipModel.setHeaderData(COMPTEUR, Qt.Horizontal, QVariant("compteur"))
        self.manipModel.setHeaderData(OBJECTIF, Qt.Horizontal, QVariant("objectif"))
        self.manipModel.setHeaderData(COMMENTAIRE, Qt.Horizontal, QVariant("commentaire"))
        self.manipModel.setHeaderData(MODE, Qt.Horizontal, QVariant("mode"))
        self.manipModel.setEditStrategy(QSqlTableModel.OnFieldChange)
        self.manipModel.select()
 
        self.manipView.setModel(self.manipModel)
        self.manipView.setSelectionMode(QTableView.SingleSelection)
        self.manipView.setSelectionBehavior(QTableView.SelectRows)
        self.manipView.resizeColumnsToContents()
 
 
    def closeDatabase(self):
 
        self.manipView.setModel(None)
        del self.manipModel
        self.db.close()
        dbConnectionName = self.db.connectionName()
        self.db = QSqlDatabase()
        self.db.removeDatabase(dbConnectionName)
 
    def closeEvent(self, event):
        self.closeDatabase()
 
 
def main():
    app = QApplication(sys.argv)    
 
    form = ManipDlg()
    form.show()
 
    sys.exit(app.exec_())
 
if __name__ == "__main__": 
    main() | 
Partager