Aide erreur d'ouverture d'une page dans programme python.

Fermé
Remi6565 - 30 juin 2023 à 11:14
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 - 6 juil. 2023 à 06:59

Bonjour à tous, 

Il y a t-il un programmeur qui peut me venir en aide svp ? 

j'ai des erreurs d'ouverture de page sur un programme que j'ai créé avec python et QT designer. 

Pour un échange par mail si possible pour envoi des fichier .ui et .py. 

***@***

Merci pour votre retour 

Rémi 

A voir également:

13 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 30 juin 2023 à 11:48

Bonjour,

Affiche ton fichier .py ici

mode d'emploi:

https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Visuellement, ça doit ressembler à ça:

for k in range(10):
    print(k)
0

Voici mon code .py 

Merci

from PyQt5.QtWidgets import *
from PyQt5.uic import loadUi
from PyQt5.QtWidgets import QListWidgetItem
from PyQt5.QtGui import QPixmap

class Joueur:
    def __init__(self,nom,prenom,age,taille,poids,poste,numero,etat):
        self.nom = nom
        self.prenom = prenom
        self.age = age
        self.taille = taille
        self.poids = poids
        self.poste = poste
        self.numero = numero
        self.etat = etat
        
class IHM_Ajout(QDialog):
    def __init__(self,Effectif):
        super().__init__()
        loadUi('ajout_joueur.ui', self)
        self.Effectif = Effectif  
        self.btnAjouter.clicked.connect(self.ajouterJoueur)
        self.btnCancel.clicked.connect(self.annulerAjout)

    def ajouterJoueur(self):
        nom = self.edtNom.text()
        prenom = self.edtPrenom.text()
        age = int(self.edtAge.text())
        taille = float(self.edtTaille.text())
        poids = float(self.edtPoids.text())
        poste = self.edtPoste.text()
        numero = int(self.edtNumero.text())
        etat = self.edtEtat.text()
        nouveauJoueur = Joueur(nom, prenom, age, taille, poids, poste, numero, etat)
        self.Effectif.append(nouveauJoueur)

        self.accept()

    def annulerAjout(self):
        self.reject()
        
class IHM_Modifier(QDialog):
    def __init__(self,Effectif, joueur):
        super().__init__()
        loadUi('modif_joueur.ui', self)
        self.Effectif = Effectif
        self.joueur = joueur
        self.initChamps()
        self.btnModifier.clicked.connect(self.modifierJoueur)
        
    def initChamps(self):
        self.edtNom.setText(self.joueur.nom)  
        self.edtPrenom.setText(self.joueur.prenom) 
        self.edtAge.setText(str(self.joueur.age))
        self.edtTaille.setText(str(self.joueur.taille))
        self.edtPoids.setText(str(self.joueur.poids))
        self.edtPoste.setText(self.joueur.poste)
        self.edtNumero.setText(str(self.joueur.numero))
        self.edtEtat.setText(self.joueur.etat)    
        
    def modifierJoueur(self):
        self.joueur.nom = self.edtNom.text()
        self.joueur.prenom = self.edtPrenom.text()
        self.joueur.age = self.edtAge.text()
        self.joueur.taille = self.edtTaille.text()
        self.joueur.poids = self.edtPoids.text()
        self.joueur.poste = self.edtPoste.text()
        self.joueur.numero = self.edtNumero.text()
        self.joueur.etat = self.edtEtat.text()
        self.accept()
        

class IHM_equipe_foot(QWidget):
    def __init__(self):
        super().__init__()
        loadUi ('IHM_equipe_foot.ui', self)
        self.btnSupprimer.clicked.connect(self.Supprimer)
        self.btnModifier.clicked.connect(self.AfficherpageModifier)
        self.btnAjouter.clicked.connect(self.AfficherpageAjout)
        self.btnSuivant.clicked.connect(self.Suivant)
        self.btnPrecedent.clicked.connect(self.Precedent)
        self.Effectif = []
        self.Effectif.append(Joueur('Guilhauma','Rémi',29,170,85,'Attaquant droit',11 ,'Titulaire'))
        self.Effectif.append(Joueur('Cobo','Rudy',27,173,80,'Milieu défensif',6 ,'Titulaire'))
        self.Effectif.append(Joueur('Bouffenie','Romain',39,185,87,'Milieu droit',8 ,'Titulaire'))
        self.Effectif.append(Joueur('Damourette', 'Thibault', 31, 175,73, 'Défenseur droit',2 , 'Titulaire'))
        self.Effectif.append(Joueur('Harati', 'Khadija',33 , 165, 60, 'Milieu gauche', 7 , 'Titulaire'))
        self.Effectif.append(Joueur('Stein', 'Nicolas', 39, 183, 102, 'Gardien', 1 , 'Titulaire'))
        self.Effectif.append(Joueur('Zidane', 'Zinédine', 51, 185, 78, 'Milieu offensif', 10 , 'Titulaire'))
        self.Effectif.append(Joueur('Giuly', 'Ludovic', 46, 164, 62, 'Défenseur gauche', 3 , 'Titulaire'))
        self.Effectif.append(Joueur('Mbappé', 'Killian', 24, 178, 75, 'Attaquant gauche', 9 , 'Titulaire'))
        self.Effectif.append(Joueur('Varane', 'Raphael', 30, 191, 81, 'Défenseur centrale', 4 , 'Titulaire'))
        self.Effectif.append(Joueur('Ramos', 'Sergio', 37, 184, 82, 'Défenseur centrale', 5 , 'Titulaire'))
        self.Effectif = sorted(self.Effectif, key=lambda joueur: joueur.numero)
        for joueur in self.Effectif:
            item = QListWidgetItem(f"{joueur.numero}. {joueur.nom} {joueur.prenom}")
            self.listWidget.addItem(item)
        self.listWidget.itemClicked.connect(self.afficherJoueurDetails)
        self.indiceListe = 0
        self.afficherJoueur()  

    def afficherJoueur(self):
        joueur = self.Effectif[self.indiceListe]  
        self.afNom.setText(joueur.nom)
        self.afPrenom.setText(joueur.prenom)  
        self.afAge.setText(str(joueur.age))
        self.afTaille.setText(str(joueur.taille))
        self.afPoids.setText(str(joueur.poids))
        self.afPoste.setText(joueur.poste)
        self.afNumero.setText(str(joueur.numero))
        self.afEtat.setText(joueur.etat)


    def Precedent(self):
        self.indiceListe -= 1
        if self.indiceListe < 0:
            self.indiceListe = 0
        self.afficherJoueur()

    def Suivant(self):
        self.indiceListe += 1
        if self.indiceListe == len(self.Effectif):
            self.indiceListe = len(self.Effectif) - 1
        self.afficherJoueur()

    def Supprimer(self):
        del self.Effectif[self.indiceListe]
        self.listWidget.takeItem(self.indiceListe)
        if self.indiceListe == len(self.Effectif):  
            self.indiceListe -= 1
        self.afficherJoueur()
        
    def afficherJoueurDetails(self, item):
        joueur_index = self.listWidget.row(item)
        joueur = self.Effectif[joueur_index]
        self.afNom.setText(joueur.nom)
        self.afPrenom.setText(joueur.prenom)
        self.afAge.setText(str(joueur.age))
        self.afTaille.setText(str(joueur.taille))
        self.afPoids.setText(str(joueur.poids))
        self.afPoste.setText(joueur.poste)
        self.afNumero.setText(str(joueur.numero))
        self.afEtat.setText(joueur.etat)
        self.currentJoueurIndex = joueur_index
        
    def AfficherpageModifier(self):
        joueur_index = self.currentJoueurIndex
        ihm = IHM_Modifier(self.Effectif, self.Effectif[self.currentJoueurIndex])
        ihm.joueur = self.Effectif[joueur_index]
        self.Effectif[joueur_index] = joueur
        if ihm.exec_() == QDialog.Accepted:
            self.Effectif = sorted(self.Effectif, key=lambda joueur: joueur.numero)
            self.afficherJoueur()
            
    def AfficherpageAjout(self):
        ihm = IHM_Ajout(self.Effectif)  
        ihm.exec()  
        self.afficherJoueur()  
        
app = QApplication([])
ihm = IHM_equipe_foot()
ihm.show()
app.exec_()
0
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 51
Modifié le 1 juil. 2023 à 04:26

Salut,

Difficile de comprendre ce qui ne va pas sans les fichiers .ui

Idéalement, ce serait de compresser ton projet, d'utiliser un site de transfert et de mettre le lien de téléchargement.

0
Remi6565 > Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025
3 juil. 2023 à 09:29

Bonjour, 

Désole je n'avais pas vu que vous aviez répondu.

Oui je me doutais de ça.. ci-dessous le lien de téléchargement du dossier avec tous les fichiers du projet. 

https://wetransfer.com/downloads/2d72ac7450b1751107c0fa8fd8ef9abe20230703072938/a87225

Merci encore :)

Rémi 

0
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 51
3 juil. 2023 à 15:06

Salut,

Alors oui, beaucoup de choses ne vont pas, tu appelles des objets qui n'existent pas dans tes fichiers UI.

Ce qui m'a le plus gêné, c'est sur l'interface principale, la gestion des items avec les boutons précédent - suivant - supprimer, rien n'est pris en compte, la suppression se fait depuis le début de ta liste d'items et non depuis l'item sélectionné.

Ce n'est qu'un premier jet :

from PyQt5.QtWidgets import *
from PyQt5.uic import loadUi
from PyQt5.QtWidgets import QListWidgetItem
from PyQt5.QtGui import QPixmap

class Joueur:
    def __init__(self,nom,prenom,age,taille,poids,poste,numero,etat):
        self.nom = nom
        self.prenom = prenom
        self.age = age
        self.taille = taille
        self.poids = poids
        self.poste = poste
        self.numero = numero
        self.etat = etat
        
class IHM_Ajout(QDialog):
    def __init__(self,Effectif):
        super().__init__()
        loadUi('ajout_joueur.ui', self)
        self.Effectif = Effectif  
        #self.btnAjouter.clicked.connect(self.ajouterJoueur)
        self.btnCancel.clicked.connect(self.annulerAjout)

    def ajouterJoueur(self):
        nom = self.edtNom.text()
        prenom = self.edtPrenom.text()
        age = int(self.edtAge.text())
        taille = float(self.edtTaille.text())
        poids = float(self.edtPoids.text())
        poste = self.edtPoste.currentText()
        numero = int(self.edtNumero.currentText())
        etat = self.edtEtat.currentText()
        nouveauJoueur = Joueur(nom, prenom, age, taille, poids, poste, numero, etat)
        self.Effectif.append(nouveauJoueur)

        self.accept()

    def annulerAjout(self):
        self.reject()
        
class IHM_Modifier(QDialog):
    def __init__(self,Effectif, joueur):
        super().__init__()
        loadUi('modif_joueur.ui', self)
        self.Effectif = Effectif
        self.joueur = joueur
        self.initChamps()
        #self.btnModifier.clicked.connect(self.modifierJoueur)
        
    def initChamps(self):
        self.edtNom.setText(self.joueur.nom)  
        self.edtPrenom.setText(self.joueur.prenom) 
        self.edtAge.setText(str(self.joueur.age))
        self.edtTaille.setText(str(self.joueur.taille))
        self.edtPoids.setText(str(self.joueur.poids))
        self.edtPoste.setCurrentText(self.joueur.poste)
        self.edtNumero.setCurrentText( str(self.joueur.numero))
        self.edtEtat.setCurrentText(self.joueur.etat)
        
    def modifierJoueur(self):
        self.joueur.nom = self.edtNom.text()
        self.joueur.prenom = self.edtPrenom.text()
        self.joueur.age = self.edtAge.text()
        self.joueur.taille = self.edtTaille.text()
        self.joueur.poids = self.edtPoids.text()
        self.joueur.poste = self.edtPoste.currentText()
        self.joueur.numero = int(self.edtNumero.currentText())
        self.joueur.etat = self.edtEtat.currentText()
        self.accept()
        

class IHM_equipe_foot(QWidget):
    def __init__(self):
        super().__init__()
        loadUi ('IHM_equipe_foot.ui', self)
        self.btnSupprimer.clicked.connect(self.Supprimer)
        self.btnModifier.clicked.connect(self.AfficherpageModifier)
        self.btnAjouter.clicked.connect(self.AfficherpageAjout)
        self.btnSuivant.clicked.connect(self.Suivant)
        self.btnPrecedent.clicked.connect(self.Precedent)
        self.Effectif = []
        self.Effectif.append(Joueur('Guilhauma','Rémi',29,170,85,'Attaquant droit',11 ,'Titulaire'))
        self.Effectif.append(Joueur('Cobo','Rudy',27,173,80,'Milieu défensif',6 ,'Titulaire'))
        self.Effectif.append(Joueur('Bouffenie','Romain',39,185,87,'Milieu droit',8 ,'Titulaire'))
        self.Effectif.append(Joueur('Damourette', 'Thibault', 31, 175,73, 'Défenseur droit',2 , 'Titulaire'))
        self.Effectif.append(Joueur('Harati', 'Khadija',33 , 165, 60, 'Milieu gauche', 7 , 'Titulaire'))
        self.Effectif.append(Joueur('Stein', 'Nicolas', 39, 183, 102, 'Gardien', 1 , 'Titulaire'))
        self.Effectif.append(Joueur('Zidane', 'Zinédine', 51, 185, 78, 'Milieu offensif', 10 , 'Titulaire'))
        self.Effectif.append(Joueur('Giuly', 'Ludovic', 46, 164, 62, 'Défenseur gauche', 3 , 'Titulaire'))
        self.Effectif.append(Joueur('Mbappé', 'Killian', 24, 178, 75, 'Attaquant gauche', 9 , 'Titulaire'))
        self.Effectif.append(Joueur('Varane', 'Raphael', 30, 191, 81, 'Défenseur centrale', 4 , 'Titulaire'))
        self.Effectif.append(Joueur('Ramos', 'Sergio', 37, 184, 82, 'Défenseur centrale', 5 , 'Titulaire'))
        self.Effectif = sorted(self.Effectif, key=lambda joueur: joueur.numero)
        for joueur in self.Effectif:
            item = QListWidgetItem(f"{joueur.numero}. {joueur.nom} {joueur.prenom}")
            self.listWidget.addItem(item)
        self.listWidget.itemClicked.connect(self.afficherJoueurDetails)
        self.currentJoueurIndex = self.listWidget.setCurrentRow(0)
        self.indiceListe = 0
        self.afficherJoueur()  

    def afficherJoueur(self):
        joueur = self.Effectif[self.indiceListe]  
        self.afNom.setText(joueur.nom)
        self.afPrenom.setText(joueur.prenom)  
        self.afAge.setText(str(joueur.age))
        self.afTaille.setText(str(joueur.taille))
        self.afPoids.setText(str(joueur.poids))
        self.afPoste.setText(joueur.poste)
        self.afNumero.setText(str(joueur.numero))
        self.afEtat.setText(joueur.etat)


    def Precedent(self):
        self.indiceListe = self.listWidget.currentRow() - 1
        if self.indiceListe < 0:
            self.indiceListe = 0
        self.listWidget.setCurrentRow(self.indiceListe)
        self.afficherJoueur()

    def Suivant(self):
        self.indiceListe = self.listWidget.currentRow() + 1
        if self.indiceListe == len(self.Effectif):
            self.indiceListe = len(self.Effectif) - 1
        self.listWidget.setCurrentRow(self.indiceListe)
        self.afficherJoueur()

    def Supprimer(self):
        self.indiceListe = self.listWidget.currentRow()
        del self.Effectif[self.indiceListe]
        self.listWidget.takeItem(self.indiceListe)
        if self.indiceListe == len(self.Effectif):  
            self.indiceListe -= 1
        self.afficherJoueur()
        
    def afficherJoueurDetails(self, item):
        joueur_index = self.listWidget.currentRow()
        joueur = self.Effectif[joueur_index]
        self.afNom.setText(joueur.nom)
        self.afPrenom.setText(joueur.prenom)
        self.afAge.setText(str(joueur.age))
        self.afTaille.setText(str(joueur.taille))
        self.afPoids.setText(str(joueur.poids))
        self.afPoste.setText(joueur.poste)
        self.afNumero.setText(str(joueur.numero))
        self.afEtat.setText(joueur.etat)

    def AfficherpageModifier(self):
        joueur_index = self.listWidget.currentRow()
        ihm = IHM_Modifier(self.Effectif, self.Effectif[joueur_index])
        ihm.joueur = self.Effectif[joueur_index]
        #self.Effectif[joueur_index] = joueur
        if ihm.exec_() == QDialog.Accepted:
            self.Effectif = sorted(self.Effectif, key=lambda joueur: joueur.numero)
            self.afficherJoueur()
            
    def AfficherpageAjout(self):
        ihm = IHM_Ajout(self.Effectif)  
        ihm.exec_()  
        self.afficherJoueur()  
        
app = QApplication([])
ihm = IHM_equipe_foot()
ihm.show()
app.exec_()

Maintenant, il reste encore des coquilles, et des boutons à connecter...

Bon courage

0

Bonjour, 

merci pour les corrections. 

Maintenant les pages "modifier" et "ajouter" s'ouvrent sans souci. 

Par contre je n'arrive pas à faire afficher l'ajout ou la motif une fois que les pages sont renseignées.. 

je suis reparti d'un fichier ou j'ai enlevé dans chaque IHM (Ajout et modif) toutes les def pour repartir de zéro.. mais a partir de la je suis bloqué je n'arrive pas à mettre les bonnes fonctionnalités... 

Voici mon nouveau code.py 

ainsi que le lien de partage pour les fichiers .ui 

https://wetransfer.com/downloads/3d82214c71a7e64ac8fc9654cd8ecfec20230704132813/eef849

merci pour votre aide :) 

from PyQt5.QtWidgets import *
from PyQt5.uic import loadUi
from PyQt5.QtWidgets import QListWidgetItem
from PyQt5.QtGui import QPixmap

class Joueur:
    def __init__(self,nom,prenom,age,taille,poids,poste,numero,etat):
        self.nom = nom
        self.prenom = prenom
        self.age = age
        self.taille = taille
        self.poids = poids
        self.poste = poste
        self.numero = numero
        self.etat = etat
        
class IHM_Ajout(QDialog):
    def __init__(self,Effectif):
        super().__init__()
        loadUi('ajout_joueur.ui', self)
        self.Effectif = Effectif
        self.btnCancel.clicked.connect(self.annulerAjout)
        self.btnSave.clicked.connect(self.SauverAjout)
        
    def annulerAjout(self):
        self.reject()
        
    def SauverAjout(self):
        self.accept()
        
class IHM_Modifier(QDialog):
    def __init__(self,Effectif):
        super().__init__()
        loadUi('modif_joueur.ui', self)
        self.Effectif = Effectif
        self.btnCancel.clicked.connect(self.annulerAjout)
        self.btnSave.clicked.connect(self.SauverAjout)
       
    def annulerAjout(self):
        self.reject()
        
    def SauverAjout(self):
        self.accept()

class IHM_equipe_foot(QWidget):
    def __init__(self):
        super().__init__()
        loadUi ('IHM_equipe_foot.ui', self)
        self.btnSupprimer.clicked.connect(self.Supprimer)
        self.btnModifier.clicked.connect(self.AfficherpageModifier)
        self.btnAjouter.clicked.connect(self.AfficherpageAjout)
        self.btnSuivant.clicked.connect(self.Suivant)
        self.btnPrecedent.clicked.connect(self.Precedent)
        self.Effectif = []
        self.Effectif.append(Joueur('Guilhauma','Rémi',29,170,85,'Attaquant droit',11 ,'Titulaire'))
        self.Effectif.append(Joueur('Cobo','Rudy',27,173,80,'Milieu défensif',6 ,'Titulaire'))
        self.Effectif.append(Joueur('Bouffenie','Romain',39,185,87,'Milieu droit',8 ,'Titulaire'))
        self.Effectif.append(Joueur('Damourette', 'Thibault', 31, 175,73, 'Défenseur droit',2 , 'Titulaire'))
        self.Effectif.append(Joueur('Harati', 'Khadija',33 , 165, 60, 'Milieu gauche', 7 , 'Titulaire'))
        self.Effectif.append(Joueur('Stein', 'Nicolas', 39, 183, 102, 'Gardien', 1 , 'Titulaire'))
        self.Effectif.append(Joueur('Zidane', 'Zinédine', 51, 185, 78, 'Milieu offensif', 10 , 'Titulaire'))
        self.Effectif.append(Joueur('Giuly', 'Ludovic', 46, 164, 62, 'Défenseur gauche', 3 , 'Titulaire'))
        self.Effectif.append(Joueur('Mbappé', 'Killian', 24, 178, 75, 'Attaquant gauche', 9 , 'Titulaire'))
        self.Effectif.append(Joueur('Varane', 'Raphael', 30, 191, 81, 'Défenseur centrale', 4 , 'Titulaire'))
        self.Effectif.append(Joueur('Ramos', 'Sergio', 37, 184, 82, 'Défenseur centrale', 5 , 'Titulaire'))
        self.Effectif = sorted(self.Effectif, key=lambda joueur: joueur.numero)
        for joueur in self.Effectif:
            item = QListWidgetItem(f"{joueur.numero}. {joueur.nom} {joueur.prenom}")
            self.listWidget.addItem(item)
        self.listWidget.itemClicked.connect(self.afficherJoueurDetails)
        self.indiceListe = 0
        self.afficherJoueur()  

    def afficherJoueur(self):
        joueur = self.Effectif[self.indiceListe]  
        self.afNom.setText(joueur.nom)
        self.afPrenom.setText(joueur.prenom)  
        self.afAge.setText(str(joueur.age))
        self.afTaille.setText(str(joueur.taille))
        self.afPoids.setText(str(joueur.poids))
        self.afPoste.setText(joueur.poste)
        self.afNumero.setText(str(joueur.numero))
        self.afEtat.setText(joueur.etat)

    def Precedent(self):
        self.indiceListe -= 1
        if self.indiceListe < 0:
            self.indiceListe = 0
        self.afficherJoueur()

    def Suivant(self):
        self.indiceListe += 1
        if self.indiceListe == len(self.Effectif):
            self.indiceListe = len(self.Effectif) - 1
        self.afficherJoueur()

    def Supprimer(self):
        if self.currentJoueurIndex is not None:
            del self.Effectif[self.currentJoueurIndex]
            self.listWidget.takeItem(self.currentJoueurIndex)
            self.currentJoueurIndex = None
            self.afficherJoueur()
        
    def afficherJoueurDetails(self, item):
        joueur_index = self.listWidget.row(item)
        joueur = self.Effectif[joueur_index]
        self.afNom.setText(joueur.nom)
        self.afPrenom.setText(joueur.prenom)
        self.afAge.setText(str(joueur.age))
        self.afTaille.setText(str(joueur.taille))
        self.afPoids.setText(str(joueur.poids))
        self.afPoste.setText(joueur.poste)
        self.afNumero.setText(str(joueur.numero))
        self.afEtat.setText(joueur.etat)
        self.currentJoueurIndex = joueur_index
        
    def AfficherpageModifier(self):
        ihm = IHM_Modifier(self)  
        ihm.exec_()  
        self.afficherJoueur()
        
    def AfficherpageAjout(self):
        ihm = IHM_Ajout(self)  
        ihm.exec_()  
        self.afficherJoueur()  
        
app = QApplication([])
ihm = IHM_equipe_foot()
ihm.show()
app.exec_()
0
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 51
4 juil. 2023 à 15:54

Salut,

Oui, c'est le problème avec les fichiers UI, difficile de retrouver ses méthodes.

Personnellement, une fois les fichiers .ui importés de Qt Designer, je les convertis en fichier .py que j'importe comme module, donc beaucoup plus facile de s'y retrouver.

Avec quel IDE travailles-tu ?

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Remi6565_ Messages postés 5 Date d'inscription mardi 4 juillet 2023 Statut Membre Dernière intervention 5 juillet 2023
4 juil. 2023 à 19:43

Je travaille avec Thonny ou Pycharm. 

D'accord, je vois par exemple à la place de mettre :

loadUi('ajout_joueur.ui', self)

 tu copie directement le code de Qt designer ? 

0
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 51
Modifié le 4 juil. 2023 à 20:24

Alors, je l'exporte en .ui et ensuite, il est converti en .py avec la commande :

pyuic5 input.ui -o output.py

 Pour te donner une idée voilà ce que ça donne.

La classe Ajouter fonctionne, du moins elle ajoute le nouveau joueur, mais il faudrait sauvegarder tout ça physiquement sur le DD ;-)

Ça va te permettre de comprendre que la lecture est plus lisible qu'avec des fichiers .ui, de plus, ça te permet également d'optimiser les dit fichiers.

https://www.dropbox.com/scl/fi/zpjbz6brkiw2fhx5ikswe/Foot.zip?rlkey=vw9av7vo25k0rzbg70716k6zl&dl=0

0
Remi6565_ Messages postés 5 Date d'inscription mardi 4 juillet 2023 Statut Membre Dernière intervention 5 juillet 2023
4 juil. 2023 à 22:33

Oh yes c'est beaucoup plus simple effectivement avec des fichiers .py.                                          Du coup j'ai continué a travailler avec les fichiers que tu m'as envoyé et j'ai fait la partie "modifier". 

Je pense que j'ai quelques choses de pas trop mal :)                                                                      Le seul truc qui cloche, c'est quand je clique sur modifier la fenêtre s'ouvre avec les infos du joueur sélectionné sauf le poste du joueur qui affiche Gardien systématiquement. Je ne sais pas pourquoi… 

Je t'envoie la version modifiée :)

Merci beaucoup en tout cas de ton aide, cela m'a énormément aidé :)

https://wetransfer.com/downloads/f27a5205771bcfbe9ebc5eafbee2fc6020230704203308/af6331

0
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 51
Modifié le 5 juil. 2023 à 04:41

Ah ah le truc qui cloche, regarde ta méthode retranslateUi() de UI_modif_joueur.py, tu ne remarques pas un truc en plus dans les chaines de caractères de self.edtEtat.setItemText() et self.edtPoste.setItemText().

Quelques points d'amélioration :

  • Comme dit plus haut, la lecture et la sauvegarde des joueurs sur DD.
  • Forcer la saisie d'entier dans Age, Taille et Poids pour éviter le plantage (regarde QIntValidator).
  • Les commentaires.
  • Remplacer les titres des fenêtres par un titre plus explicite.

Optimiser les fichiers :

Remplacer les .addItem("") par :

self.edtNumero.addItems("" for _ in range(20))
#...
self.edtPoste.addItems("" for _ in range(10))

Voir également du côté des polices, elles se répètent alors qu'elles sont identiques.

0
Remi6565_ Messages postés 5 Date d'inscription mardi 4 juillet 2023 Statut Membre Dernière intervention 5 juillet 2023
5 juil. 2023 à 09:43

Alors je ne suis pas sur de voir ce qui cloche mais il me semble remarquer que nous n'appelons pas la même méthode : "setItemtext" dans Ui_modif... et "setcurrenttext" dans IHM_equipe. Mais en faisant ces modifs rien ne change... 

Pour le reste j'ai pris en compte toutes tes remarques :)

Par contre je viens de remarquer également que j'avais ajouté un logo sur le fichier principale .ui il apparait bien sur l'interface Qt designer mais pas quand je lance le programme... 

0
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 51
Modifié le 5 juil. 2023 à 10:21

Ah Ah, j'avoue que c'est vicieux, mais certains de tes setItemtext() ont un espace en fin de chaine, idem dans UI_ajout_joueur.py, il manque aussi les accents sur "Defenseur" ;-)

Python 3.11.0 (v3.11.0:deaf509e8f, Oct 24 2022, 14:43:23) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> "Milieu gauche" == "Milieu gauche "
False
>>> "Défenseur gauche" == "Defenseur gauche "
False
>>> 

Pour le logo, il faut que tu enregistres ton png dans ton répertoire de travail et que tu modifies la ligne  341 de UI_equipe_foot.py

0
Remi6565_ Messages postés 5 Date d'inscription mardi 4 juillet 2023 Statut Membre Dernière intervention 5 juillet 2023
5 juil. 2023 à 10:38

ahah sacrément vicieux, absolument pas vu celle la ^^ mais du coup impeccable cela fonctionne très bien maintenant :)

J'ai mon fichier logo en .png avec le raccourci créé sur Qtdesigner .qrc dans le dossier.

Et j'ai ces lignes mais que veux tu que je modifie ? le lien est le bon.

self.label_2.setPixmap(QtGui.QPixmap(":/logo /logotype-seul-couleur-RVB.png"))
self.label_2.setScaledContents(True)
self.label_2.setObjectName("label_2")
0
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 51
5 juil. 2023 à 10:58

Par exemple, dans mon répertoire de travail, j'ai un sous-répertoire nommé Logos qui contient "mon_image.png"

la modif c'est :

self.label_2.setPixmap(QtGui.QPixmap("Logos/mon_image.png"))
0
Remi6565_ Messages postés 5 Date d'inscription mardi 4 juillet 2023 Statut Membre Dernière intervention 5 juillet 2023
5 juil. 2023 à 11:11

Ok tout simplement.

Bon beh écoute j'ai plus qu'à continuer à faire les petites améliorations que tu m'as donné, et surtout à te remercier pour ta grande aide !!

Tu m'as sauvé :) 

Merci encore à toi!

Bonne journée 

Rémi 

0
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 51
5 juil. 2023 à 12:00

Cool, n'hésite pas à revenir si tu rencontres des problèmes ;-)

Important aussi, c'est le contrôle, par exemple dans "UI_ajout_joueur.py", s'assurer que tous les QLineEdit ne soit pas vide afin d'éviter le plantage à la validation.....

Bonne journée.

0
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 51
5 juil. 2023 à 21:02

De mon côté, j'ai amélioré certaines choses qui pourront t'inspirer.

https://www.dropbox.com/scl/fi/pula85ndquvcc33ktrjhb/Foot-2.zip?rlkey=e4gtcryzd35su3f9dv6vfx1sq&dl=0

0
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 51
6 juil. 2023 à 06:59

Ouppss !!!

https://www.dropbox.com/scl/fi/yixi9lo8pyofma3vbf2ry/Foot-2.zip?rlkey=rm0zemqvqwr23o7e272tkc1pw&dl=0

0