Bonjour !
Voilà mon problème,
j'ai des tables dans une BD PostGIS/PostgreSQL, je teste un petit programme en python qui doit faire ceci:
- au lancement s'ouvre un premier formulaire avec deux boutons type "PushButton".
- lorsque j'appuie sur le premier bouton, un deuxième formulaire doit s'ouvrir et afficher soit une table soit le résultat d'une requête dans une QTableView.
(l'affichage du résultat doit se faire dans le deuxième formulaire et non dans le premier).
Après plusieurs tentatives, la deuxième fenêtre s''affiche, mais sans les résultats.
Merci de m'aider SVP !

Ce code va être intégré à une autre application.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
#!/usr/bin/env python
# -*- coding: Utf-8 -*-
 
import sys
import os
from PyQt4 import QtGui
from PyQt4.QtGui import QMainWindow
from PyQt4.QtGui import QDialog
from PyQt4.QtGui import QColor
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtSql import *
 
 
from FenDonnees import Ui_FenDonnees
from Formulaire import Ui_Form
 
 
class FenPrincipale(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)
 
 
        # Make Signal/Slot connections
        # Connect the button to the function below
        QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.buttonclick)
        QtCore.QObject.connect(self.ui.pushButton_2, QtCore.SIGNAL("clicked()"), self.buttonclick)
 
 
 
    def buttonclick(self):          
 
        global DBNAME
        DRIVER = "QPSQL"
        DBNAME = "bd"
        USER = "Med"
        PASSWD = "test"
        HOST = u"localhost"
        PORT = 5432
 
        DB = QSqlDatabase()
        DB = QSqlDatabase.addDatabase(DRIVER)
        DB.setDatabaseName(DBNAME)
        DB.setHostName(HOST)
        DB.setUserName(USER)
        DB.setPassword(PASSWD)
        DB.setPort(PORT)
        query = QSqlQuery()
        uri = QgsDataSourceURI()
        uri.setConnection(HOST, str(PORT), DBNAME, USER, PASSWD)  
        uri.setDataSource("Med",  "vtable", "geom")
        # Affichage des donnees ...........      
 
        if (DB.open()):
            QMessageBox.information(self, self.trUtf8("Titre de la fenêtre"), self.trUtf8("Bienvenue : "))
            query = QSqlQuery(DB)    
        else:
            DB.close()
            QMessageBox.warning(self, self.trUtf8("Titre de la fenêtre"), self.trUtf8("Désolé, UserName ou PassWord incorrecte !")) 
 
 
 
 
        query = QSqlQuery(DB)
        requete = """ select * from "Med"."Communes" """
        query=QSqlQuery(DB)
        query.exec_  ("drop table vtable")
        query.exec_  ("create table vtable as (" + requete + ")")
 
        print "c'est le choix des data !!!!!!!!!!"  
 
 
        self.model = QSqlQueryModel(self)
 
        self.model.setQuery(requete)
        self.model.select()  
 
        self.ui.tableView.setModel(self.model) 
        self.tableview = QtGui.QTableView()
        self.tableview.setModel(self.model)
        self.tableview.show()
 
 
        self.FT = FenDonnees(self)
        self.FT.exec_()
 
 
 
 
 
 
 
class FenDonnees(QDialog, Ui_FenDonnees):
    """
    Class documentation goes here.
    """
    def __init__(self, parent = None):       
        self.parent = parent
#       self.parent.vRequeteChoisie="aucun"
#       self.parent.vAffichageChoisi="aucun"             
        QDialog.__init__(self, parent)
        self.ui=Ui_FenDonnees()
        self.setupUi(self)
 
 
## --------------- Fenetre de lancement ------------------------------------
 
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
 
    MainWindow = QtGui.QMainWindow()
    ui = FenPrincipale()
    ui.show()
    sys.exit(app.exec_())