Bonjour à tous !
Dans le cadre du développement d'une petite application sur Python3 et PyQt5, je suis amené à ouvrir par un click sur un chek_box, une petite fenêtre dans laquelle deux spin_box sont présents. Une fois les valeurs des spin_box validés par un push_button, la fenêtre se referme pour revenir sur la fenêtre principale.
Mon problème est que je n'arrive pas à récupérer les variables des spin_box de la seconde fenêtre dans ma fenêtre principale. Je ne sais pas du tout comment aborder le problème.
Mes fenêtres ont été réalisées à l'aide de QtDesigner. Je suis sur Python 3.7 et PyQt5. Mon programme se structure de la manière suivante :
- "main.py" : qui lance ma première fenêtre
- "random_data.py" qui possède toutes les fonctionnalités de ma fenêtre principale
- "intervalle_intervention.py" : qui possède les fonctionnalités de ma seconde fenêtre
- dossier "form" : contenant la fenêtre principale : "random_data_form.py", et qui contient aussi la seconde fenêtre : "intervalle_form.py"
J'ai créé dans ma classe RandomData, une fonction pour appeler la deuxième fenêtre lorsqu'on click sur le checkbox. Cette fonction se nomme "openIntervalleForm" et ressemble à ceci :
Le code présent dans le programme intervalle_intervention.py est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 def openIntervalleForm(self): Intervalle_intervention_form = IntervalleIntervention() Intervalle_intervention_form.exec_()
Les valeurs que je voudrais récupérer dans mon premier programme sont "value_min" et "value_max" autrement dit les valeurs des deux spin_box de ma fenêtre.
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 # -*- coding: utf-8 -*- from PyQt5.QtWidgets import * from form.intervalle_form import * class IntervalleIntervention(QDialog, Ui_intervalle_form): def __init__(self): QDialog.__init__(self) print("setupUi") self.setupUi(self) self.pb_ok.clicked.connect(self.retourne_valeurs) self.pb_ok.clicked.connect(self.quitter) self.pb_annuler.clicked.connect(self.quitter) def retourne_valeurs(self): value_min = self.spin_min.value() value_max = self.spin_max.value() if value_min < value_max : if type(value_min) == int : if type(value_max) == int : return(value_min, value_max) else : Q = QMessageBox() Q = QMessageBox.critical(Q, "Erreur", u"Les valeurs sont incorrectes") else: Q = QMessageBox() Q = QMessageBox.critical(Q, "Erreur", u"Les valeurs sont incorrectes") else: Q = QMessageBox() Q = QMessageBox.critical(Q, "Erreur", u"La valeur minimum est supérieur à la valeur maximum") def quitter(self): self.reject()
A l'heure actuelle, avec ce code, j'arrive à visualiser la seconde fenêtre et à gérer mes erreurs. Cependant, je n'arrive pas à capter mes variables dans mon premier programme.
Je ne sais pas si j'ai été très clair dans mes explications. Si je ne l'ai pas été, n'hésitez pas à me le dire.
Merci et bonne journée à tous.
Partager