Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / Lien entre les fenêtres

Lien entre les fenêtres

Remonter à Forum général Python
  • Lien entre les fenêtres

    Envoyé par foufou le 30 Mai 2011 à 11:01
    Bonjour,

    je veux faire une interface graphique qui contient plusieurs fenêtres. Dans la première page, j'ai créé deux boutons ' quitter ' et ' démarrer '. j'ai utilisé toplevel pour créer la deuxième fenêtre. mon probléme est le suivant:
    - je veux que la page de démarrage disparait lors de l'apparition de la deuxième.
    - pour la deuxième page j'ai mis deux boutons ' précédant ' et ' suivant ' . je veux qu'en apuyant sur le bouton ' précédant ', il revient à la première page.

    une autre question: comment insérer le code du programme que j'ai créé pour que vous puisse le voir?

    Merci d'avance
    • Re: Lien entre les fenêtres

      Envoyé par jacko le 1 Juin 2011 à 14:07
      Je suppose toujours que vous utilisez Tkinter (ce que vous ne précisez pas).

      1/
      Je ne pense pas que l'on puisse faire disparaître la fenêtre initiale (celle créée par le Tk() initial).

      2/
      Ergonomiquement, ce n'est pas une bonne idée de faire apparaître et disparaître des fenêtres : trop de flash à l'écran. Si vous souhaitez avoir des écrans qui se remplacent, je vous propose plutôt la solution suivante :
      - Créer une seule fenêtre (la fenêtre initiale Tk()).
      - Dans celle-ci, créer autant de Frame que vous avez d'écran.
      - Peuplez chaque Frame par le contenu de votre écran.
      - Tous les Frame sont "gridés" en 1x1 : ils se chevauchent donc.
      - Pour afficher un écran, visualiser son Frame par grid() et masquer tous les autres par grid_remove().
      - Il faut donc maintenir une liste des Frame.

      Dans l'exemple ci-dessous, la fonction affiche(f) affiche l'écran associé au Frame f. Elle sera appelée dans le handler du bouton "suivant" par ex.


      def affiche(fr):
      for f in liste:
      f.grid_remove()
      fr.grid()

      fen=Tk()
      fr1=Frame(fen)
      fr1.grid(row=1,column=1)
      # peupler fr1
      fr2=Frame(fen)
      fr2.grid(row=1,column=1)
      # peupler fr2
      liste=(fr1,fr2)
      affiche(fr1)
      fen.mainloop()


      3/
      Ne cherchez pas à mettre du code dans les post du forum : il vaut mieux penser les principes plutôt que se noyer dans des lignes de code. Mais si vous y tenez, utiliser les balise [ code ] [ /code ] pour respecter l'indentation. Et utilisez la fonction "Aperçu" avant d'enregistrer votre post, pour voir s'il se présente bien.

      4/
      Tout marchera mieux si le bouton a pour libellé "précédent".

      Bon courage !
Rendu par Ploneboard