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 :

Problème Interface Python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Lycéen
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut Problème Interface Python
    Bonsoir,

    Je suis en Terminale S et je souhaite créer une interface.
    Dans mon programme, j'ouvre d'abord ma fenêtre principale. Ensuite, j'ouvre une deuxième fenêtre, appelée fenêtre verte qui affiche une image du nom de "poubelles.gif". Mon problème arrive après : je n'arrive pas à répéter l'opération pour ouvrir une nouvelle fenêtre (appelée fenêtre quoi) en cliquant sur la fenêtre verte. Je pense qu'il y a tout d'abord un problème dans ma fonction position_fenetreverte à la fin du programme ...

    Voici mon programme :

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    #On importe Tkinter
    from tkinter import*
     
    #On crée une fenêtre Tkinter
    mafenetre=Tk()
    fenetreverte=Tk()
    fenetrequoi=Tk()
     
    #On charge l'image
    photo=PhotoImage(file="image.gif")
     
     
    #Création d'un widget Canvas (zone graphique)
    Largeur=800
    Hauteur=600
    Canevas=Canvas(mafenetre, width=Largeur, height=Hauteur)
    Canevas.pack()
     
    #L'image est affichée dans le canevas
    monimage=Canevas.create_image(0,0,anchor=NW,image=photo)
     
    #On prépare le label qui affichera la position du clic
    chaine=Label(mafenetre)
    chaine.pack()
     
    chaineverte=Label(fenetreverte)
    chaineverte.pack()
    #On crée les zones ovales et on les met en couleurs lors du survol de la souris
    o1=Canevas.create_oval(0,15,400,280, width=0, activefill='green')
    o2=Canevas.create_oval(420,110,800,390, width=0, activefill='red')
    o3=Canevas.create_oval(5,350,560,600, width=0, activefill='blue')
     
    #on crée un label (ligne de texte)
    label1=Label(mafenetre, text = "Je m'appelle", fg='blue')
    label1.pack()
     
    #n crée un widget Entry (zone d'entrée de texte)
    ma_zone_d_entree=Entry(mafenetre, bg='light sky blue', fg='maroon')
    ma_zone_d_entree.pack()
     
    #la fonction ci-dessous est appelée lors de l'action sur le bouton monbouton
    def fonction_bienvenue():
        nom=ma_zone_d_entree.get()
        label2['text']="Amuse-toi bien " + nom + "!"
     
    #On crée un bouton
    monbouton=Button(mafenetre, text="Valider", command=fonction_bienvenue)
    monbouton.pack()
     
    #On crée un second label (texte vide pour le moment)
    label2=Label(mafenetre, text="",fg='dark green')
    label2.pack()
     
    #On programme l'ouverture de la fenetre Verte
    fenetresecondairedejaouverte=0
     
    def fermerfenetreverte():
        global fenetresecondairedejaouverte
        fenetresecondairedejaouverte=0
        fenetreverte.destroy()
     
    def ouverturefenetreverte():
        global fenetreverte, fenetresecondairedejaouverte
     
        fenetreverte = Toplevel()
     
        ## Ouverture du fichier
        imageverte = 'poubelles.gif'
        ## Remplace PhotoImage de Tkinter par celui de PIL
        photo = PhotoImage(file=imageverte)
     
        Canevas_fenetreverte=Canvas(fenetreverte, width=620, height=350)
        monimage=Canevas_fenetreverte.create_image(0,0,anchor=NW,image=photo)
        Canevas_fenetreverte.pack()
     
     
     
        fenetreverte.protocol("WM_DELETE_WINDOW",fermerfenetreverte)
     
        texte2=Label(fenetreverte, text="", fg='red')
        texte2.pack()
        bouton2 = Button(fenetreverte, text='FERMER',command=fermerfenetreverte)
        bouton2.pack()
        fenetreverte.mainloop()
     
    #On programme l'ouverture de la fenetre quoi
    fenetretroisiremedejaouverte=0
     
    def fermerfenetrequoi():
        global fenetretroisiremedejaouverte
        fenetretroisiremedejaouverte=0
        fenetrequoi.destroy()
     
    def ouverturefenetrequoi():
        global fenetrequoi, fenetretroisiremedejaouverte
     
        fenetrequoi = Toplevel()
     
        ## Ouverture du fichier
        imagequoi = 'quoi.gif'
        ## Remplace PhotoImage de Tkinter par celui de PIL
        photo = PhotoImage(file=imagequoi)
     
        Canevas_fenetrequoi=Canvas(fenetrequoi, width=620, height=350)
        monimage2=Canevas_fenetrequoi.create_image(0,0,anchor=NW,image=photo)
        Canevas_fenetrequoi.pack()
     
     
     
        fenetrequoi.protocol("WM_DELETE_WINDOW",fermerfenetrequoi)
     
        texte3=Label(fenetrequoi, text="", fg='red')
        texte3.pack()
        bouton3 = Button(fenetrequoi, text='FERMER',command=fermerfenetrequoi)
        bouton3.pack()
        fenetrequoi.mainloop()
     
     
    #fonction appelée par le clic du bouton gauche de la souris
    def position_pointeur(evenement):
        chaine['text']="Clic détecté en X="+str(evenement.x)+",Y"+str(evenement.y)
     
        if evenement.x>0 and evenement.x<400 and evenement.y>15 and evenement.y<280:
            ouverturefenetreverte()
        if evenement.x>420 and evenement.x<800 and evenement.y>110 and evenement.y<390:
            ouverturefenetrerouge()
        if evenement.x>5 and evenement.x<560 and evenement.y>350 and evenement.y<600:
            ouverturefenetrebleue()
     
    #On écoute cette fois le bouton gauche de la souris
    mafenetre.bind("<Button-1>", position_pointeur)
     
     
    #fonction position sur la fenetre verte
    def position_fenetreverte(evenement2):
        chaineverte['text']="Clic détecté en X="+str(evenement2.x)+",Y"+str(evenement2.y)
     
        if evenement2.x>0 and evenement2.x<600 and evenement2.y>0 and evenement2.y<350:
            ouverturefenetrequoi()
     
    fenetreverte.bind("<Button-1>", position_fenetreverte)
     
     
     
     
     
     
    #On démarre la boucle Tkinter qui s'interrompt quand on ferme la fenêtre
    mafenetre.mainloop()

    Merci d'avance pour votre aide,
    Nonimamie

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par Nonimamie Voir le message
    Merci d'avance pour votre aide
    Pour faire simple, il ne doit y avoir qu'un seul Tk() dans votre programme. Ce sera la fenetre principale qui sera détruite à la fin de l'application. Les autres fenêtres (secondaires) doivent être créées via Toplevel().
    Donc, il est préférable d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #On crée une fenêtre Tkinter
    mafenetre=Tk()
    fenetreverte=Toplevel()
    fenetrequoi=Toplevel()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre habitué
    Femme Profil pro
    Lycéen
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut Problème Interface Python
    Merci pour votre réponse.

    J'ai modifié ce que vous m'avez dit mais j'ai toujours le même problème : je n'arrive pas à afficher le message "Clic détecté en X,Y" pour m'indiquer la position du pointeur sur la deuxième fenêtre Tkinter (fenêtre verte).

    Bonne soirée,
    Nonimamie

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par Nonimamie Voir le message
    J'ai modifié ce que vous m'avez dit mais j'ai toujours le même problème : je n'arrive pas à afficher le message "Clic détecté en X,Y" pour m'indiquer la position du pointeur sur la deuxième fenêtre Tkinter (fenêtre verte)
    Vu le nombre de fenêtre que vous créez, comment arrivez vous à savoir sur quelle fenêtre vous avez cliqué?

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

  5. #5
    Membre habitué
    Femme Profil pro
    Lycéen
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut
    J'ouvre tout d'abord la deuxième fenêtre et je clique dessus ... Ais-je répondu à votre question ?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par Nonimamie Voir le message
    J'ouvre tout d'abord la deuxième fenêtre et je clique dessus ... Ais-je répondu à votre question ?
    Personnellement, je préférerais voir une fenêtre verte avec, par exemple, fenetreverte=Toplevel(bg='green'), pour savoir sur quoi on clique.

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

Discussions similaires

  1. [turbogears] problème avec python 2.5
    Par gorgonite dans le forum Général Python
    Réponses: 1
    Dernier message: 23/05/2007, 17h48
  2. Problème interface graphique mandriva avec HP
    Par alicom86 dans le forum Mandriva / Mageia
    Réponses: 7
    Dernier message: 14/05/2007, 21h24
  3. [Linux-XML] Probléme avec python-xml
    Par Exodus dans le forum Général Python
    Réponses: 5
    Dernier message: 27/03/2007, 15h47
  4. Problème interface graphique
    Par thecyril dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 14/01/2007, 16h08
  5. Problème avec python
    Par Thrystan dans le forum Gnome
    Réponses: 2
    Dernier message: 17/08/2006, 00h29

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