Bonjour à toutes et à tous.. Alors voila j'ai un petit problème et j'aimerais bien que vous m'aidiez..
Alors voila je suis en plein projet de fin d'étude et j'arrive presque la fin. Bref, je dois créer une interface graphique avec pyqt qui affiche des données récupérée depuis un code python.. Pour être plus clair il s'agit d'un système de contrôle d'accès. Donc, sans plus tarder voici mon problème:
Je dois créer deux fenêtre.. une fenêtre d'accueil et une fenêtre qui affiche les info et un message disant "ACCESS GRANTED" ou "ACCESS DENIED".
J'ai créé la seconde fenêtre avec QT Designer ( je ferais de même pour la première mais ce n'est pas ça mon problème) puis j'ai généré le code python avec la fameuse commande pyuic4 -o... ... . J'ai aussi réussi à paramétrer les labels de la fenêtre en fonction des données contenu dans le programme python principal. Ce que je voudrais faire c'est faire apparaître la fenêtre 1 par défaut puis et commander le lancement de la seconde fenêtre qu'après un événement déclencheur( qui n'est pas un bouton car la fenêtre ne contient que des labels). Donc l’événement déclencheur doit être une condition vérifiée dans le programme python principal.
Pour mieux comprendre mon besoin voici un scénario:
un employé passe devant un lecteur (RFID). le programme lis le code RFID (EPC) puis consulte la base de données pour vérifier si l’employé a le droit d'entrer. Donc par défaut, l'écran (LCD) Affiche la fenêtre d'accueil (Fenêtre 1) et quand l'employé passe son badge devant le lecteur (événement déclencheur) :
1) Je ferme la fenêtre d'accueil.
2) Je lance la seconde fenêtre.
3) Je met un temps mort [time.sleep(Délai)]
4) Je fait réapparaître la fenêtre 1.
Je tiens à insister sur le fait que ma fenêtre ne contient que des labels ( texte et image )
voici le code générée par la commande pyuic4 -o ... ... et que j'ai un légèrement modifier en ajouter un constructeur et des fonction à la classe de la fenêtre 2 (MainWindow):
et voici le programme main ( Veuillez sauter à la partie qui nous intéresse dans ce sujet, elle est tout en bas et est encadrée par des #, le reste du programme n'est pas important, du moins pour vous)
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 # -*- coding: utf-8 -*- from PyQt4 import QtCore, QtGui from PyQt4.QtGui import * try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_MainWindow(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.setupUi(self) def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(774, 349) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.label_pic = QtGui.QLabel(self.centralwidget) self.label_pic.setGeometry(QtCore.QRect(70, 140, 141, 131)) self.label_pic.setText(_fromUtf8("")) self.label_pic.setPixmap(QtGui.QPixmap(_fromUtf8("une image.jpg"))) self.label_pic.setScaledContents(True) self.label_pic.setObjectName(_fromUtf8("label_pic")) self.label_NomPre = QtGui.QLabel(self.centralwidget) self.label_NomPre.setGeometry(QtCore.QRect(420, 130, 161, 31)) self.label_NomPre.setObjectName(_fromUtf8("label_NomPre")) self.label_Matricule = QtGui.QLabel(self.centralwidget) self.label_Matricule.setGeometry(QtCore.QRect(420, 180, 161, 31)) self.label_Matricule.setObjectName(_fromUtf8("label_Matricule")) self.label_Access = QtGui.QLabel(self.centralwidget) self.label_Access.setGeometry(QtCore.QRect(250, 240, 341, 31)) self.label_Access.setScaledContents(True) self.label_Access.setObjectName(_fromUtf8("label_Access")) self.label_NomPre_2 = QtGui.QLabel(self.centralwidget) self.label_NomPre_2.setGeometry(QtCore.QRect(240, 130, 161, 31)) self.label_NomPre_2.setObjectName(_fromUtf8("label_NomPre_2")) self.label_Matricule_2 = QtGui.QLabel(self.centralwidget) self.label_Matricule_2.setGeometry(QtCore.QRect(240, 180, 161, 31)) self.label_Matricule_2.setObjectName(_fromUtf8("label_Matricule_2")) self.label_pic_2 = QtGui.QLabel(self.centralwidget) self.label_pic_2.setGeometry(QtCore.QRect(610, 10, 141, 91)) self.label_pic_2.setText(_fromUtf8("")) self.label_pic_2.setPixmap(QtGui.QPixmap(_fromUtf8("une image")))<br> self.label_pic_2.setScaledContents(True) self.label_pic_2.setObjectName(_fromUtf8("label_pic_2")) self.label_pic_3 = QtGui.QLabel(self.centralwidget) self.label_pic_3.setGeometry(QtCore.QRect(30, 20, 151, 81)) self.label_pic_3.setText(_fromUtf8("")) self.label_pic_3.setPixmap(QtGui.QPixmap(_fromUtf8("une image"))) self.label_pic_3.setScaledContents(True) self.label_pic_3.setObjectName(_fromUtf8("label_pic_3")) MainWindow.setCentralWidget(self.centralwidget) ''' self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 774, 21)) self.menubar.setObjectName(_fromUtf8("menubar")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) ''' self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def SetImage(self, pict): self.label_pic.setPixmap(QtGui.QPixmap(_fromUtf8(pict))) """self.label_pic_2.setPixmap(QtGui.QPixmap(_fromUtf8("Logo INDUS.png"))) self.label_pic_3.setPixmap(QtGui.QPixmap(_fromUtf8("TIScircuits.png")))""" def SetNomPre(self, NP): self.label_NomPre.setText(_fromUtf8(NP)) def SetMat(self, Mat): self.label_Matricule.setText(_fromUtf8(Mat)) def SetAccess(self, Access): self.label_Access.setText(_fromUtf8(Access)) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) self.label_NomPre.setText(_translate("MainWindow", "Hellonompre", None)) self.label_Matricule.setText(_translate("MainWindow", "Hellomatricule", None)) self.label_Access.setText(_translate("MainWindow", "Helloaccess", None)) self.label_NomPre_2.setText(_translate("MainWindow", "Nom & Prénom", None)) self.label_Matricule_2.setText(_translate("MainWindow", "Matricule", None))
j'espère avoir était clair et j'espère que vous pourrez m'aider. Je vous en saurez grès !
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 # -*- coding: utf-8 -*- from PyQt4 import QtCore, QtGui from PyQt4.QtGui import * import sys, pyodbc, serial import RFID_MW as mw from os import chdir import os import time #Variables Code_Zone = "d" EPC_Code = "ce nest pas important" Pics_Dir = "ce nest pas important" OK = "Access Granted" NotOk = "Access Denied" BG1 = "BG1.jpg" if __name__=='__main__': # GETTING RFID CODE ser = serial.Serial(port='COM6', baudrate=115200) # Windows connection a = ser.read(19).encode('hex') if (len(a)==38): EPC_Code = a[14:] print ('EPC is : ' + EPC_Code) else: continue ser.close() #DB CONNECTION cnxn = """DRIVER={ce nest pas important};SERVER=ce nest pas important;PORT=ce nest pas important;UID=ce nest pas important;PWD=ce nest pas important;DATABASE=ce nest pas important""" db_connection = pyodbc.connect(cnxn) print ('Connected TO DB') sql_command = "SELECT [ce nest pas important] FROM [ce nest pas important].[ce nest pas important].[table] WHERE [empl_rfid]= ""ce nest pas important"" db_cursor = db_connection.cursor() db_cursor.execute(sql_command) rows = db_cursor.fetchone() result= str(rows[0]) NomPre = str(rows[1]) Matricule = str(rows[2]) print result print NomPre print Matricule chdir(Pics_Dir) # cd to the picture's directory x= os.getcwd() print x # GUI : C'est cette partie qui la plus importante pour ce sujet. Le reste ne l'est pas, du moins pour vous !! ############################################################################################################################### im2 = Matricule+".jpg" app = QtGui.QApplication(sys.argv) ex = mw.Ui_MainWindow() palette = QPalette() palette.setBrush(QPalette.Background,QBrush(QPixmap("BG1.jpg"))) ex.setPalette(palette) ex.SetImage(im2) ex.SetNomPre(NomPre) ex.SetMat(Matricule) if result =='True': print (OK) ex.SetAccess(OK) else: print(NotOk) ex.SetAccess(NotOk) #ex.showFullScreen() ex.show() sys.exit(app.exec_()) ###########################################################################################
Partager