Bonjour,
J'étais entrain de développer un mini carnet d'adresse pour apprendre les bases de PyQt5.
Sauf que petit problème j'ai du mal a comprendre un principe ou plutôt le problème que je rencontre,
A la ligne 41 j'ai mis comme argument 'self' pour donner le parent a la classe ajouter_contact sauf que si je le fait la fenêtre ne s'affiche pas alors qu'a l'inverse si je l'enlève la fenetre s'affiche, je suppose car il n'y a pas de conflit parent.
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 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QListWidget, QWidget, QHBoxLayout import GestionnaireBD as Gbd import Ajouter_Contact class accueil(QMainWindow): def __init__(self): super().__init__() self.BD = Gbd.GestionnaireBD() self.initUI() def initUI(self): # Création de la fenêtre self.setWindowTitle('Accueil') self.setGeometry(400, 500, 300, 300) # Central Widget central_widget = QWidget() self.setCentralWidget(central_widget) # Ajouter les Widgets layout = QHBoxLayout(central_widget) self.liste_Contact = QListWidget() ajouter_button = QPushButton('Ajouter Contact') ajouter_button.clicked.connect(self.ouvrir_fenetre_ajouter_contact) layout.addWidget(ajouter_button) layout.addWidget(self.liste_Contact) # Remplir la QListWidget self.remplir_liste_contacts() def remplir_liste_contacts(self): self.liste_Contact.clear() # Effacer la liste actuelle Liste = self.BD.get_listContact() for contact in Liste: self.liste_Contact.addItem(contact[1] + ' ' + contact[2]) def ouvrir_fenetre_ajouter_contact(self): self.ajouter_contact_window = Ajouter_Contact.ajouter_contact(self) self.ajouter_contact_window.show() def ajouter_contact_bd(self, prenom, nom, telephone):#pour ajouter_contact self.BD.ajouter_contact(prenom, nom, telephone) self.remplir_liste_contacts() if __name__ == '__main__': app = QApplication(sys.argv) ex = accueil() ex.show() sys.exit(app.exec_())
Je me demande alors pourquoi ma fenêtre ne s'affiche pas et comment régler se problème car j'aimerai pouvoir lui donner cette argument pour pouvoir utiliser des méthodes parent dans l'enfant.
Voici Ajouter_Contact :
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 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLineEdit, QPushButton class ajouter_contact(QWidget): def __init__(self, parent=None): super().__init__(parent) print("TEST") self.parent = parent self.initUI() def initUI(self): self.setWindowTitle("Ajouter Contact") layoutLine = QVBoxLayout() self.Prenom = QLineEdit(self) self.Prenom.setPlaceholderText("Prénom") self.Nom = QLineEdit(self) self.Nom.setPlaceholderText("Nom") self.telephone = QLineEdit(self) self.telephone.setPlaceholderText("Téléphone") self.valider = QPushButton("Valider", self) layoutLine.addWidget(self.Prenom) layoutLine.addWidget(self.Nom) layoutLine.addWidget(self.telephone) layoutLine.addWidget(self.valider) self.setLayout(layoutLine) # Connecter le bouton "Valider" au slot self.valider.clicked.connect(self.valider_contact) def valider_contact(self): prenom = self.Prenom.text() nom = self.Nom.text() telephone = self.telephone.text() if self.parent: self.parent.ajouter_contact_bd(prenom, nom, telephone) self.close()
Partager