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 :

Redimensionner des frames


Sujet :

Tkinter Python

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 132
    Points : 130
    Points
    130
    Par défaut Redimensionner des frames
    Bonjour,
    J'ai un petit problème j'ai 2 Frames dans une Fenetre, une avec une ScrollBar et l'autre avec un bouton. Je voudrais que qu'en redimensionnant la fenetre, les frames suivent. Car pour l'instant la Scrollbar occupe une place énorme et cache le Bouton.

    voici le Code :
    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
    import tkinter as tk
     
    fenetre=tk.Tk()
    Frame1=tk.Frame(fenetre)                                                                             
    Frame1.pack(side="left",fill="both", expand=1)
    Frame2=tk.Frame(fenetre)
    Frame2.pack(side="right",fill="both", expand=1)
    vsb=tk.Scrollbar(Frame1,orient="vertical")                                                           
    text=tk.Text(Frame1,yscrollcommand=vsb.set)                                                            
    vsb.config(command=text.yview)
    vsb.pack(side="right",fill="y", expand=1)
    text.pack(side="left",fill="both", expand=1)
    tk.Button(Frame2, text="Kill", command=fenetre.destroy).pack( expand=1) 
     
    fenetre.mainloop()
    Merci d'avance pour vos réponses, bonne continuation.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    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 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Salut,

    La question est de savoir à quels widgets distribuer l'espace disponible lors du redimensionnement de la fenêtre.
    Avec le gestionnaire "pack", les widgets avec expand=True vont recevoir ce "surplus" uniformément .
    note: en écrivant vsb.pack(side="right",fill="y", expand=1), la vsb recevra aussi une partie du surplus.

    "grid" permet de "pondérer" colonnes et lignes de cette distribution.
    Panedwindow a d'autres possibilités.
    Toutes sont à connaître pour savoir ce qui sera le plus adapté et éviter "place" et gestion de l'espace libre à la main.

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

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 132
    Points : 130
    Points
    130
    Par défaut
    Merci de votre réponse.

    Je voudrais juste que les frames suivent la fenetre, c'est pour cela que je n'utilise pas grid du moins je pense que c'est une mauvaise idée car il n'y a pas de fonction expand.
    Je ne connais pas PlanedWindow je me renseigne de ce pas.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    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 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Citation Envoyé par StabiloHB Voir le message
    Je voudrais juste que les frames suivent la fenetre, c'est pour cela que je n'utilise pas grid du moins je pense que c'est une mauvaise idée car il n'y a pas de fonction expand.
    "pack" fonctionne bien lorsque pour des widgets avec des tailles +/- identiques.
    Avec "grid", vous avez la possibilité d'avoir une taille minimale de colonne ou de ligne et la possibilité de pondérer la distribution de la place.

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

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 132
    Points : 130
    Points
    130
    Par défaut
    Que les Frames se pondèrent entre elles ou qu'elles se pondèrent par rapport à la fenetre ?
    Quelle est cette fonction ?
    Parce que pour l'instant la taille de la Scrollbar ne diminue pas fasse au bouton.

    Merci d'avance.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    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 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Citation Envoyé par StabiloHB Voir le message
    Que les Frames se pondèrent entre elles ou qu'elles se pondèrent par rapport à la fenetre ?
    Quelle est cette fonction ?
    "entre elles" n'a pas de sens puisque la répartition est déléguée à un geometry manager.
    Mais vous avez une différence entre la création initiale qui est calculée en fonction de la demande et de l'espace "offert" par la fenêtre et les effets des redimensionnements de cette fenêtre sur les dimensions des différents widgets placés dedans. Réduisez votre fenêtre pack va retirer autant à chaque widget et le bouton ne sera plus visible. La répartition de l'espace ajouté ou retiré obéit à d'autres algo. que la répartition initiale des widgets dans la fenêtre.

    grid_{column|row}configure(index, minsize=..., weight=...)
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 132
    Points : 130
    Points
    130
    Par défaut
    Désolé de vous embêter comme ça, je débute sous Tkinter...

    Je ne sais pas comment utiliser votre fonction configure j'ai placé les frames en grid mais laissé le contenant des Frames en pack car il n'y a qu'un widget par frame.
    Je ne sais pas non plus quoi mettre dans weight.

    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
    import tkinter as tk
    fenetre=tk.Tk()
    Frame1=tk.Frame(fenetre)                                                                             
    Frame1.grid(row=0,column=0)
    Frame2=tk.Frame(fenetre)
    Frame2.grid(row=0,column=1)
    grid_configure(Frame2, minsize=40, weight=??)
    vsb=tk.Scrollbar(Frame1,orient="vertical")                                                           
    text=tk.Text(Frame1,yscrollcommand=vsb.set)                                                            
    vsb.config(command=text.yview)
    vsb.pack(side="right",fill="y",expand=1)
    text.pack(side="left",fill="both",expand=1)
    tk.Button(Frame2, text="Kill", command=fenetre.destroy).pack( expand=1) 
    
    fenetre.mainloop()
    Merci d'avance.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    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 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Citation Envoyé par StabiloHB Voir le message
    Désolé de vous embêter comme ça, je débute sous Tkinter...
    Si vous débutez avec tkinter, la seule chose que vous pouvez faire, c'est lire la documentation en jouant avec les différentes options pour voir ce qu'il se passe... Sinon vous allez recopier des trucs sans les comprendre qui seront adaptés à une situation mais incapable d'y retoucher dans d'autres.

    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
    import tkinter as tk
     
    fenetre=tk.Tk()
    fenetre['bg']='blue'
    Frame1=tk.Frame(fenetre)                                                                             
    Frame1.grid(row=0, column=0)
    vsb=tk.Scrollbar(Frame1,orient="vertical")                                                           
    text=tk.Text(Frame1,yscrollcommand=vsb.set)                                                            
    vsb.config(command=text.yview)
    vsb.pack(side="right",fill="y")
    text.pack(side="left",fill="both", expand=1)
     
    Frame2=tk.Frame(fenetre)
    #Frame2.pack(side="right",fill="both", expand=1)
    Frame2.grid(row=0, column=1)
    tk.Button(Frame2, text="Kill", command=fenetre.destroy).pack( expand=1)
    fenetre.grid_columnconfigure(0, weight=1)
     
    fenetre.mainloop()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 132
    Points : 130
    Points
    130
    Par défaut
    Ah super, j'avais pas compris dans la commande la partie "{row|column}"

    Merci pour votre temps, je vais continuer de chercher pour affiner mon programme.

    Bonne continuation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. IWebBrowser redimensionnement des frames
    Par rayda dans le forum Windows
    Réponses: 0
    Dernier message: 02/01/2008, 19h59
  2. Redimensionnement des composants
    Par hush dans le forum Agents de placement/Fenêtres
    Réponses: 20
    Dernier message: 21/08/2005, 12h07
  3. Récupérer url d'une autre fenêtre contenant des frames
    Par coolhead dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/08/2005, 11h12
  4. appel dans des frames
    Par drizzt2511 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/01/2005, 10h40
  5. Redimensionnement des Paquets IP sur un Réseau Local
    Par Bonoboo dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 16h40

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