Gestion Parent/enfant affichage
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,
Code:
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_()) |
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.
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:
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() |