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

Tkinter Python Discussion :

Reprendre un programme apres fermeture fenetre


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Par défaut Reprendre un programme apres fermeture fenetre
    Bonjour,

    Au sein d'un programme je crée un fenetre, qui me sert de boite de dialogue avec l'utilisateur qui sert a demander une valeur.
    J'aimerai qu'après avoir cliquer sur 'Ok' la programme continue car pour l'instant ben je detruit la fenetre puis plus rien! je vois pas comment faire pour que le programme continue...

    Voici un bout de mon code:

    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from Tkinter import *
    fen1=Tk()
    txt1= Label(fen1, text='Nombre de Truc a calculer')
    entr1= Entry(fen1)
    txt1.grid(row =0)
    entr1.grid(row =0, column =1)
    bou1= Button(fen1, text='Ok', command = fen1.destroy)
    bou1.pack()
    bou1.grid(row =1, column =1)
    fen1.mainloop()
    TrucACalculer = entr1
    ...

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Par défaut
    J'ai remarquer en faite qu'il bloque sur l'instuction mainloop() et attend meme si je renseigne le champ et clik 'ok'

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir XSquallX,

    Voici pour ta demande

    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
    from Tkinter import *
     
    class tonprog(Tk):
     
        def __init__(self):
            Tk.__init__(self)
            self.withdraw()
            self.trucacalculer = Label(self)
            self.trucacalculer.pack()
            Button(self, text='Quitter', command=self.quit).pack()
            self.intro()
     
        def valid(self):
            self.trucacalculer.config(text=self.entr1.get())
            self.fen1.destroy()
            self.deiconify()
     
        def intro(self):
            self.fen1=Toplevel()
            Label(self.fen1, text ='Nombre de Truc a calculer').pack()
            self.entr1 = Entry(self.fen1)
            self.entr1.pack()
            Button(self.fen1, text='Ok', command=self.valid).pack()
     
    if __name__== '__main__':     
        fen=tonprog()    
        fen.mainloop()
    Mais je te conseille de reprendre les tutos et de faire progressivement.
    Sans notions Python tu vas droit au mur.

    Et pense à Dernière modification par pacificator ; Aujourd'hui à 20h23. Motif: ajout des balises [code] (le #) ainsi qu'à l'indentation (Tu ne veux pas t'en charger pacificator ? Ah ? Ok ----------------->[]) .

    @+ et welcome.

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Et pense à Dernière modification par pacificator ; Aujourd'hui à 20h23. Motif: ajout des balises [code] (le #) ainsi qu'à l'indentation (Tu ne veux pas t'en charger pacificator ? Ah ? Ok ----------------->[]) .
    Elle est très bien cette indentation, non?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Par défaut
    ah mais je pensait pas ca si difficile en faite...!!
    Ben j'ai fait quelque tuto sur les fenetre c'est pour ca que j'y pensait à ma porter...
    Merci en tout cas

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    Bonjour,
    Que veux tu faire après la fermeture de la fenêtre, juste un calcul avec la valeur de l'Entry ou réafficher une fenêtre?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Par défaut
    ben ecoute non j'ai pas besoin de fenetre, j'affecte juste la valeur tapée à une variable et je m'en sert dans une boucle.

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    J'ai remarquer en faite qu'il bloque sur l'instuction mainloop() et attend meme si je renseigne le champ et clik 'ok'
    En effet le mainloop est bloquant, jusqu'à ce que la fenêtre soit détruite. Ton problème vient du faite que ton Entry est détruite au moment ou tu veux récupérer sa valeur. Il faut donc récupérer sa valeur avant de détruire la fenêtre:
    Voici quelques idées:
    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
     
    from Tkinter import *
     
    def onOk():
    	global TrucACalculer
    	TrucACalculer = entr1.get()
    	fen1.destroy()
     
    fen1=Tk()
    txt1= Label(fen1, text='Nombre de Truc a calculer')
    entr1= Entry(fen1)
    txt1.grid(row =0)
    entr1.grid(row =0, column =1)
    bou1= Button(fen1, text='Ok', command = onOk)
    bou1.pack()
    bou1.grid(row =1, column =1)
    fen1.mainloop()
     
    print TrucACalculer
    #ici ta boucle
    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
     
    from Tkinter import *
     
    def onOk():
     
    	TrucACalculer = entr1.get()
    	fen1.destroy()
    	print TrucACalculer
    	#ici ta boucle
     
    fen1=Tk()
    txt1= Label(fen1, text='Nombre de Truc a calculer')
    entr1= Entry(fen1)
    txt1.grid(row =0)
    entr1.grid(row =0, column =1)
    bou1= Button(fen1, text='Ok', command = onOk)
    bou1.pack()
    bou1.grid(row =1, column =1)
    fen1.mainloop()
    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
     
    from Tkinter import *
     
    class MyApp(Tk):
        def __init__(self):
            Tk.__init__(self)
            self.createWidget()
            self.trucACalculer = ""
            self.mainloop()
     
        def createWidget(self):
            Label(self, text='Nombre de Truc a calculer').grid(row =0)
            self.entr1= Entry(self)
            self.entr1.grid(row =0, column =1)
            Button(self, text='Ok', command = self.onOk).grid(row =1, column =1)
     
        def onOk(self):
            self.trucACalculer = self.entr1.get()
            self.destroy()
     
        def getTrucACalculer(self):
            return self.trucACalculer
     
     
     
    app = MyApp()
     
    print app.getTrucACalculer()
    #ici ta boucle

Discussions similaires

  1. Programme attend fermeture fenetre selection fichier
    Par andrebernard dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/05/2009, 07h08
  2. [DOS] Reprendre la main après le lancement d'un programme
    Par kimz dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 28/05/2007, 23h58
  3. [C#] Process toujours actif apres fermeture de la fenetre
    Par toxycyty dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/10/2006, 16h48
  4. Service ou programme actif apres fermeture de session
    Par SlideMT dans le forum Windows
    Réponses: 2
    Dernier message: 12/04/2006, 10h47
  5. get => pointeur null apres fermeture d'une sous-fenetre
    Par gorgonite dans le forum AWT/Swing
    Réponses: 15
    Dernier message: 11/02/2006, 21h42

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