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 :

Redimensionnement automatique des widgets


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut Redimensionnement automatique des widgets
    Bonjour,

    Je cherche une technique qui permet de redimmensionner automatiquement un widget dans une fenêtre de tkinter, lorsque l'on redimensionne celle-ci.
    Le widget devrait prendre la taille de la fenêtre, remplir tout l'intérieur.

    J'ai bien l'exemple de G.Swinnen dans "apprendre à programmer en Python 3" (p.227) mais je ne comprends pas que le code ci-dessous ne marche pas...
    - En fait il y a beaucoup plus de code, mais j'ai mis l'essentiel du problème -

    Merci de votre aide.

    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
     
    from tkinter import*
     
    class cadre(Frame):
        def __init__(self, bg=None, hauteur=None, largeur=None):
           Frame.__init__(self, bg=bg, width=largeur, height=hauteur)
           self.bind('<Configure>', self.dimensionner)
     
        def dimensionner(self, event):
            self.config(width=self.winfo_width(), height=self.winfo_height())
     
    class fenetre(Tk):
        def __init__(self, couleur='grey'):
            Tk.__init__(self)
            self.cadre=cadre(bg='blue', master=self, hauteur=200, largeur=300)
            self.cadre.grid(row=0, column=0)
     
    def main():
        ma_fenetre=fenetre()
        mainloop()
     
    if __name__ == '__main__':
        main()

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur calcul et simulation
    Inscrit en
    Juin 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur calcul et simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 41
    Par défaut
    Salut,

    Voilà la solution que j'utiliserai :

    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*
     
    class cadre(Frame):
        def __init__(self, bg=None, hauteur=None, largeur=None):
           Frame.__init__(self, bg=bg, width=largeur, height=hauteur)
     
    class fenetre(Tk):
        def __init__(self, couleur='grey'):
            Tk.__init__(self)
            self.cadre=cadre(bg='blue', master=self, hauteur=200, largeur=300)
            self.cadre.grid(row=0, column=0, sticky='EWNS')
            self.grid_columnconfigure(0,weight=1)
            self.grid_rowconfigure(0,weight=1)
     
    def main():
        ma_fenetre=fenetre()
        mainloop()
     
    if __name__ == '__main__':
        main()
    sticky='EWNS' -> le widget reste collé aux bords est (E), ouest (W), nord (N) et sud (S) soit droite, gauche, haut et bas de la cellule dans laquelle il est (cellule 0,0 d'après le grid).
    Ensuite, avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.grid_columnconfigure(0,weight=1)
    J'oblige la colonne 0 à prendre toute la place (1 = 100%) possible, et donc à s'ajuster quand la fenêtre grandit.
    Idem pour la ligne avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.grid_rowconfigure(0,weight=1)
    Après comme je suis sous Python 2.7, je ne sais pas si ça marchera parfaitement (j'ai du supprimer le "master=self" par exemple pour que ça se lance chez moi)

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut Terminé
    Merci, en fait j'avais essayé de cette manière, mais en faisant une erreur et je m'étais orienté vers autre chose. J'ai corrigé grâce à vous.

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

Discussions similaires

  1. Redimensionnement automatique des controls dans un userform
    Par patricktoulon dans le forum Général VBA
    Réponses: 81
    Dernier message: 08/10/2019, 16h48
  2. Redimensionnement automatique des polices
    Par SaumonAgile dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 26/08/2008, 10h44
  3. Redimensionnement automatique des composants d'une feuille
    Par Delbeke dans le forum Vos contributions VB6
    Réponses: 3
    Dernier message: 07/06/2007, 14h15
  4. Probleme redimensionnement automatique des composants
    Par catwomanette dans le forum Interfaces Graphiques en Java
    Réponses: 15
    Dernier message: 07/02/2007, 10h29
  5. Redimensionnement automatique des pages
    Par fricazoide dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 29/12/2006, 09h29

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