IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

créer une fonction pour un rectangle


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 44
    Par défaut créer une fonction pour un rectangle
    Bonjour, travaillant sur un programme utilisant une interface graphique, il y a un moment ou je dois afficher 14 rectangles qui sont chacun cliquable, et recopier 14 fois le même texte me permettant de créer ces rectangles me paraît un peu bourratif pour le programme, donc j'ai décidé de faire une fonction qui regroupe la partie création du rectangle et de la zone cliquable et de mettre en paramètre changeable les coordonnées et le texte voulu cette fonction ressemble à ça:
    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
    def rectangle_choix(coord,coord_text,text):
        depart=pygame.draw.rect(ecran,Blanc,(coord),5)
        placeTexte = Police2.render(text,True,Blanc)
        rectangleTexte  = placeTexte.get_rect()
        rectangleTexte .topleft = (coord_text)
        ecran.blit(placeTexte,rectangleTexte)
        clickable_area = depart
     
        continuer=1
     
        while continuer:
            for event in pygame.event.get():
                if event.type == QUIT:
                 continuer=0
                 pygame.quit()
     
        continuer=1
     
        if event.type == MOUSEBUTTONDOWN:
                    if event.button == 1:
                        if clickable_area.collidepoint(event.pos):
                            fichier=open("trajet.txt","w")
                            fichier.write(text)
                            fichier.close()
                            display.update(ecran.fill(0))
                            fenetre_arrivee()
    et du coup cette fonction sera appelé de cette manière si par exemple je veux créer mon premier rectangle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rectangle_choix((60,135,150,70),(80,150),'entree')
        pygame.display.flip()
    Mais le problème est la justement, autant avant, en créant chaque rectangle à la main, ils apparaissaient, mais la, il ne veulent plus apparaître, mon programme n'affiche aucune erreur en particulier, donc je ne comprend pas en quoi cela ne marche pas... Merci d'avance si quelqu'un peut m'aider!

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Les lignes 9-26 ne devraient pas être dans la fonction (en tout cas au vu de ce que vous en attendez).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 44
    Par défaut
    Justement, c'est ce que j'ai pensé faire au début, mais la partie event.type qui correspond à l'événement de la zone cliquable, lorsque ces lignes ne sont pas dans la fonction, il y a une erreur et le programme me met que "event is not defined"...

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Citation Envoyé par Redelta Voir le message
    lorsque ces lignes ne sont pas dans la fonction, il y a une erreur et le programme me met que "event is not defined"...
    Si vous poussez ces lignes dans la fonction juste pour cacher le problème sous le tapis... sûr que çà ne le fait pas. Mais vous ne donnez aucune information qui permette de vous aider (on peut juste compatir).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 44
    Par défaut
    De base ma fonction comprend pour commencer la répétition des 14 zones pour les rectangles, puis de ces fameuses lignes qui admet la variable "event" pour par la suite la répétition de 14 évènements correspondant chacun à l'événement de la zone cliquable sur le rectangle.
    Du coup j'ai décidé de faire une fonction qui commence par la création de la zone rectangulaire, je met en coordonnées le nom du paramètre que je pourrais changer, puis à la suite l'évènement de la zone cliquable, qui ne fonctionne pas sans ces lignes que vous me demandez de supprimer puisqu'elles génèrent la variable event mais si je laisse ces lignes les rectangles n'apparaissent pas...
    Je sais pas si c'est assez précis, je peux toujours mettre l'ensemble de la fonction de base avec les 14 rectangles si ça vous intéresse ?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Citation Envoyé par Redelta Voir le message
    puis de ces fameuses lignes qui admet la variable "event" pour par la suite la répétition de 14 évènements
    La variable event est créée par "for event in pygame.event.get()" qui devrait être dans la boucle principale (while continuer) de votre programme...

    Citation Envoyé par Redelta Voir le message
    je met en coordonnées le nom du paramètre que je pourrais changer, puis à la suite l'évènement de la zone cliquable,
    Puis ici:
    if event.type == MOUSEBUTTONDOWN:
    if event.button == 1:
    if clickable_area.collidepoint(event.pos)
    il faudrait tester les 14 clickable_area pour savoir laquelle a été cliquée (ce qui suppose que vos fonctions retournent ces rectangles).

    Citation Envoyé par Redelta Voir le message
    Je sais pas si c'est assez précis, je peux toujours mettre l'ensemble de la fonction de base avec les 14 rectangles si ça vous intéresse ?
    1 rectangle suffirait.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Débutant] Créer une fonction pour un vecteur quelconque
    Par dzdesperado dans le forum MATLAB
    Réponses: 1
    Dernier message: 11/03/2013, 11h28
  2. Créer une fonction pour filtrer un formulaire
    Par Le nettoyeur dans le forum Langage
    Réponses: 36
    Dernier message: 14/02/2013, 11h09
  3. Créer une fonction pour le max de jours d'un mois..
    Par kim mading dans le forum WinDev
    Réponses: 4
    Dernier message: 05/10/2012, 13h51
  4. Créer une fonction pour remplacer des caractères
    Par virtuadrack dans le forum C++
    Réponses: 4
    Dernier message: 11/09/2008, 14h52
  5. Créer une fonction pour un update avec phppgadmin
    Par Peewee766 dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 19/06/2008, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo