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

Bibliothèques tierces Python Discussion :

[Tkinter]faire en sorte que deux labelFrame conservent la même hauteur [Python 3.X]


Sujet :

Bibliothèques tierces Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2022
    Messages : 4
    Points : 3
    Points
    3
    Par défaut [Tkinter]faire en sorte que deux labelFrame conservent la même hauteur
    Bonjour,
    Je débute en Python, et j'ai deux labelframe qui doivent avoir la même hauteur, sachant que dans le futur, je souhaite faire en sorte de pouvoir ajouter ou supprimer des lignes. Il s'agit d'un tableau de budget, il faut donc que les totaux soient au meme niveau, et pour bien faire que le titre du label soit à la même hauteur également.

    Voici ce que j'obtiens :
    Nom : question 1.png
Affichages : 148
Taille : 17,4 Ko
    Nom : question 2.png
Affichages : 144
Taille : 18,3 Ko

    Je mets ici le morceau de code que j'ai réalisé pour essayer d'arranger les choses... J'ai trouvé plusieurs exemples qui fonctionnent, mais sur mon code, ca n'a pas l'air d'aller... (J'ai mis le fichier complet en pièce jointe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    FenetreProjet.update() 
    MyCanva.update()
    hauteurD=TitreDepense.winfo_height()
    hauteurR=TitreRecette.winfo_height()
    print("hauteur dépense = " + str(hauteurD))
    print("hauteur recette = " + str(hauteurR))
     
    #gestion de la hauteur des frames depense et produits
    if hauteurD>hauteurR:
        TitreRecette.config(height=hauteurD)
    else :
        TitreDepense.config(height=hauteurR)

    Fichier complet : projetbis.py

    Merci beaucoup de votre aide !

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

    Cases de même hauteur (ou largeur) <=> cases et au gestionnaire de geometrie grid.

    Après imaginez un cas de figure plus simple comme afficher 2 lignes x 2 colonnes avec dedans des widgets de dimensions différentes... et compulser la documentation de grid pour arriver à ce qu'on veut et/ou poster un exemple de quelques lignes (pas 1000!) pour montrer ce qu'on a fait et le problème rencontré.


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

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2022
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Cases de même hauteur (ou largeur) <=> cases et au gestionnaire de geometrie grid.
    Je n'ai pas compris votre réponse.

    Quant au code que j'ai posté, j'ai réalisé un peu tard que le décalage ne serait pas modifiable (c'est la première fois que je code en python et je n'ai pas beaucoup d'expérience en programmation tout court, la seule chose que j'ai fait jusqu'à présent, c'est du scratch....), quant à consulter la doc, ben, j'ai essayé, si je suis là, c'est que je n'y ai pas réussi... Je veux bien faire un autre code si vous voulez, mais je pensais que le morceau de code qui est celui qui était censé modifier la frame associé la copie d'écran suffirait à voir ce que je voulais obtenir... Navrée d'avoir dérangé donc.
    Bonne soirée.

  4. #4
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 874
    Points : 3 721
    Points
    3 721
    Par défaut
    Salut,

    Voici ton code avec quelques modifications pour régler les deux problèmes mentionnés dans les images (ce qui ne signifie pas qu'il n'y a pas d'autres problèmes)...
    Fichiers attachés Fichiers attachés

  5. #5
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2022
    Messages : 4
    Points : 3
    Points
    3
    Par défaut un grand merci !
    Alors là, chapeau et merci !
    Grâce à toi, je pense que je viens de comprendre ce que signifiait "weight" enfin, je pense... corrige moi si je me trompe, mais cela veut dire que c'est la frame avec le plus de poids qui va remplir le plus l'espace ?
    De fait, je n'ai pas besoin de mon "if"....
    Merci merci et encore merci ! C'est vraiment pas évident au début...

  6. #6
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 874
    Points : 3 721
    Points
    3 721
    Par défaut
    Salut,

    En fait il fallait aussi ajouter/modifier des "sticky"...

    - Le premier problème était dû au fait que le LabelFrame "TitreDepense" est plus petit que le LabelFrame "TitreRecette" du coup dans la cellule où se trouve le LabelFrame "TitreDepense" il y avait de l'espace vide en-dessus et en-dessous (car par défaut le LabelFrame "TitreDepense" est centré dans sa cellule).

    Pour régler ce problème il a suffit de faire en sorte de l'étirer en hauteur pour qu'il occupe tout l'espace (toute la hauteur de la cellule) ---> pour ça on fait sticky="NS" dans TitreDepense.grid(row=1, column=0, sticky="NS").

    - Maintenant dans le LabelFrame "TitreDepense" il reste de l'espace vide en dessous de la dernière ligne, la ligne 37 "total des achats" du coup cette ligne ne se trouve pas tout en bas comme tu le voulais...

    Or pour la placer tout en bas il faut d'abord qu'elle occupe tout cet espace vide et pour cela on fait : TitreDepense.rowconfigure(37,weight=1) (on donne un poids de 1 à cette ligne ce qui est un poids supérieur à toutes les autres lignes du coup c'est cette ligne 37 qui occupera tout l'espace libre/restant).

    Maintenant cette ligne 37 est centrée par défaut dans sa cellule, pour la placer à droite et tout en bas on fait sticky="WS" dans TotalDepense.grid(row=37, column=0, sticky="WS")...

    Et voilà...
    Ce n'est pas la seule solution...

  7. #7
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2022
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Super explications, c'est plus clair maintenant, ce n'est peut etre pas la seule solution, mais elle fonctionne et je la trouve plutôt élégante.
    Merci encore.

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

Discussions similaires

  1. [XL-2010] Commande pour faire en sorte que deux boutons activent la même chose
    Par isrdum dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/11/2014, 22h41
  2. [AC-2007] Faire en sorte que deux tables aient le même type de champs
    Par markfish55 dans le forum Access
    Réponses: 4
    Dernier message: 24/02/2014, 16h14
  3. Comment faire en sorte que le prog se fasse répéter
    Par LeonHONORE dans le forum Pascal
    Réponses: 3
    Dernier message: 20/04/2008, 21h41
  4. Réponses: 3
    Dernier message: 17/05/2007, 19h30
  5. Réponses: 4
    Dernier message: 02/09/2006, 19h41

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