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

GUI Python Discussion :

Empecher l'ouverture d'une même fenêtre plusieurs fois


Sujet :

GUI Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Par défaut Empecher l'ouverture d'une même fenêtre plusieurs fois
    Bonjours a tous

    Voila je suis débutant en python et j'ai un problème

    J'ai un programme qui m'ouvre une fenêtre (Nommer fenêtre1 pour l'explication) sous Tkinter, sur cette même fenêtre1 j'ai une zone de clique qui m'ouvre une autre fenêtre (Nommer fenêtre2 pour l'explication) mais une fois celle-ci ouverte si je reclique sur la zone de clique de la fenêtre1, une nouvelle fenêtre2 apparait (j'en ai donc 2).

    Je voudrais donc que la fenêtre2 ne puisse s'ouvrir qu'une seul fois.

    Merci de votre attention.

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

    Je voudrais donc que la fenêtre2 ne puisse s'ouvrir qu'une seul fois.
    Si vous ne montrez pas votre code, que dire a part que vous devriez modifier le handler du callback qui déclenche l'ouverture de fenetre2?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Par défaut
    Voici le code:

    def Fenetre2():
    global L1
    F1.destroy ()
    F2=Tk()
    L1= Label(F2, text="Nombre de Cookie")
    L1.pack (side=BOTTOM)
    Fond_2= PhotoImage (file='Fond_2.gif')
    F2.title("PROJET ISN")
    F2.geometry ('700x700+200+10')
    F2.minsize (700,700)
    F2.maxsize (700,700)
    fond2=Canvas(F2,width=700, height=700)
    image_fond=fond2.create_image(500,500,image=Fond_2)
    fond2.pack()
    fond2.bind ('<Button-1>', clique2)
    F2.mainloop ()

    def Fenetre3():
    F3=Tk()
    F3.title("PAGE AMELIORATION")
    F3.geometry ('700x700+200+10')
    F3.minsize (700,700)
    F3.maxsize (700,700)
    fond3=Canvas(F3,width=700, height=700)
    #image_fond=fond2.create_image(500,500,image=Fond_2)
    fond3.pack()
    fond3.bind ('<Button-1>', clique3)
    F3.mainloop ()

    def clique2 (event):
    if 100<=(event.x)<=200 and 100<=(event.y)<=200: #ouverture de la fenêtre ame
    Fenetre3 ()


    Voila les bout du code en relation avec le problème et je souhaite que la fenêtre3 ne puisse s’ouvrir qu'en un seul exemplaire.

  4. #4
    Membre éprouvé Avatar de psyphi
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2006
    Messages : 119
    Par défaut
    vive la balise code pour poster des lignes de ton programme. C'est illisible autrement.
    Fenetre2 et Fenetre3 ce sont des fonctions ou des méthodes d'une classe?

  5. #5
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Par défaut
    #Interface Graphique

    #_________________________________IMPORTATION___________________________________
    from time import *
    from tkinter import *
    from Projet_fonction import *

    #_________________________________DEBUT_FENETRE_________________________________

    F1=Tk()
    F1.title("PROJET ISN")
    F1.geometry ('700x700+200+10')
    F1.minsize (700,700)
    F1.maxsize (700,700)
    #_______________________________IMAGE___________________________________________

    Fond_1= PhotoImage (file='Fond_1.gif')
    #_______________________________CREATION_DU_FOND_DE_DEPART______________________

    fond=Canvas(F1,width=700, height=700)
    Accueil_Fond=fond.create_image(350,350,image=Fond_1)
    fond.pack()
    #________________________________CREATION_DE_LA_FENETRE_DE_JEUX_________________
    def Choisir (event):
    if 250<=(event.x)<=500 and 200<=(event.y)<=400:
    Fenetre2()
    if 0<=(event.x)<=100 and 550<=(event.y)<=650:
    F1.destroy()

    #______________________________FENETRE_2________________________________________


    def Fenetre2():
    global L1
    F1.destroy ()
    F2=Tk()
    L1= Label(F2, text="Nombre de Cookie:",fg="brown",font=("Impact", 16),relief=RAISED,bg="grey")
    L1.pack (side=BOTTOM)
    Fond_2= PhotoImage (file='Fond_2.gif')
    F2.title("PROJET ISN")
    F2.geometry ('700x700+200+10')
    F2.minsize (700,700)
    F2.maxsize (700,700)
    fond2=Canvas(F2,width=700, height=700)
    image_fond=fond2.create_image(350,350,image=Fond_2)
    fond2.pack()
    fond2.bind ('<Button-1>', clique2)
    F2.mainloop ()

    #______________________________Clique_Sur_Page_Des_Ame__________________________

    def clique3 (event):
    if 0<=(event.x)<=100 and 0<=(event.y)<=100: #Amélioration 1
    Ame1 ()
    # if 100<=(event.x)<=600 and 160<=(event.y)<=260: #Amélioration 2
    # h ()
    # if 100<=(event.x)<=600 and 300<=(event.y)<=400: #Amélioration 3
    # h ()
    # if 100<=(event.x)<=600 and 440<=(event.y)<=540: #Amélioration 4
    # h ()
    # if 100<=(event.x)<=600 and 580<=(event.y)<=680: #Amélioration 5
    # h ()

    #_______________________________FENETRE_3_______________________________________

    def Fenetre3():
    F3=Tk()
    F3.title("PAGE AMELIORATION")
    F3.geometry ('700x700+200+10')
    F3.minsize (700,700)
    F3.maxsize (700,700)
    fond3=Canvas(F3,width=700, height=700)
    #image_fond=fond2.create_image(500,500,image=Fond_2)
    fond3.pack()
    fond3.bind ('<Button-1>', clique3)
    F3.mainloop ()
    #______________________________Clique___________________________________________
    def clique2 (event):
    if 300<=(event.x)<=400 and 300<=(event.y)<=400:
    cliquecookie ()
    if 100<=(event.x)<=200 and 100<=(event.y)<=200: #ouverture de la fenêtre ame
    Fenetre3 ()
    #___________________________________Clique Cookie_______________________________
    def cliquecookie():
    global Cookie, CookieTotal,L1
    CookieTotal=CookieTotal+Cookie
    L1.configure (text="Nombre de Cookie: " + str (CookieTotal))

    #______________________________AMELIORATION_COOKIE______________________________

    def Ame1():
    global CookieTotal,PrixAme1,NbrAme1,PrixAme1BASE
    if CookieTotal>=PrixAme1 and CookieTotal-PrixAme1>0:
    NbrAme1=NbrAme1+1
    print(NbrAme1)
    print (PrixAme1)
    PrixAme1=PrixAme1BASE+(NbrAme1*5)
    CookieAme1Total=(NbrAme1*CookieAme1)
    CookieTotal=CookieTotal-PrixAme1

    #def Ame2():
    #global CookieTotal

    #_________________________FIN_BOUCLE_FENETR_____________________________________
    fond.bind ('<Button-1>',Choisir)
    F1.geometry('400x400')
    F1.mainloop()



    Voila le code avec la balise et oui les fenêtre sont des fonctions.

  6. #6
    Membre éprouvé Avatar de psyphi
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2006
    Messages : 119
    Par défaut
    Bon dans ton cas, le plus simple c'est d'ajouter une variable globale que tu mets à True quand tu ouvres ta fenetre. Ensuite avant de réouvrir ta fenêtre tu dois vérifier l'état de cette variable.
    Cependant je pense que ton code n'est pas très propre, pourquoi ta fenêtre F1 est globale et pas les autres. Normalement ne devrais tu pas n'avoir une fenêtre principale qui lance la mainloop et gère les autres fenetres.

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/07/2014, 09h37
  2. [WD17] empêcher l'ouverture d'une même fenêtre deux fois
    Par alex1005 dans le forum WinDev
    Réponses: 3
    Dernier message: 13/01/2014, 09h55
  3. Plusieurs GUI dans une même fenêtre
    Par z_tweety dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 14/05/2010, 11h17
  4. ouverture d'une meme application plusieurs fois
    Par warubi dans le forum VB.NET
    Réponses: 4
    Dernier message: 29/06/2007, 18h50
  5. Ouverture de la même JFrame plusieurs fois
    Par louby dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 08/06/2006, 17h23

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