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 :

Methode Grid() customtkinter [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Mars 2022
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Mars 2022
    Messages : 15
    Par défaut Methode Grid() customtkinter
    Bonjour à tous...

    je rencontre toujours le même problème avec cette méthode grid(), sur les widgets.
    je suis sur une interface graphique customtkinter, et je cherche à afficher dans un ctk.CtKscrollableframe, des frames d'une largeur 1000.
    tant que ces frames sont vides, cela fonctionne, mais dès que j’ insert un Label dedans, le frame ne respecte plus la largeur de 1000, mais s'adapte aux dimensions du label.

    ci dessous mon 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    from typing import Tuple
    from amc_widget import *
    import customtkinter as ctk
     
     
    class MainWindow(ctk.CTk):
        def __init__(self, fg_color: str | Tuple[str, str] | None = None, **kwargs):
            super().__init__(fg_color, **kwargs)
     
            self.title('gestion Projet')
            self.geometry('400x400+200+50')
            self.btn=ctk.CTkButton(self,text='ouvre le projet',command=self.open)
            self.btn.pack()
     
        def open(self):
            code_projet='P0001'
            etapes=('etude','montage','finition')
            projectwindow=ProjectWindowShow(self,code_projet=code_projet,etapes=etapes)
     
    class ProjectWindowShow(ctk.CTkToplevel):
        def __init__(self,parent:any,code_projet:str,etapes:list, *args, fg_color: str | Tuple[str, str] | None = None, **kwargs):
            super().__init__(parent)
     
            self.title('descriptif du projet '+ code_projet)
            self.grab_set()
            #recuperation de la taille de l'ecran
            screen_width = self.winfo_screenwidth()
            screen_height = self.winfo_screenheight()
            self.geometry(f'{screen_width}x{screen_height}+0+0')
            self.vcodeprojet=code_projet
            self.etapes=etapes
            self.columnconfigure(0,weight=1)
            self.topframe=ctk.CTkFrame(self)
            self.topframe.grid(row=0,column=0,padx=5,pady=5,sticky='ew')
            self.topframe.columnconfigure(0,weight=1)
            self.topframe.columnconfigure(1,weight=6)
            self.topframe.columnconfigure(2,weight=1)
     
            self.codeprojet=LabeledLabel(self.topframe,text_label='Code ',size='attribut')
            self.codeprojet.grid(row=0,column=0,rowspan=2,padx=2,pady=2,sticky='esnw')
            self.codeprojet.update(self.vcodeprojet)
     
            self.titleprojet=LabeledEntry(self.topframe,text_label='titre ',size='titre',width_entry=400)
            self.titleprojet.grid(row=0,column=1,rowspan=2,padx=2,pady=2,sticky='esnw')
     
     
            self.startdate=LabeledEntry(self.topframe,text_label='début',size='attribut')
            self.startdate.grid(row=0,column=2,padx=2,pady=2,sticky='esnw')
            self.enddate=LabeledEntry(self.topframe,text_label='fin',size='attribut')
            self.enddate.grid(row=1,column=2,padx=2,pady=2,sticky='esnw')
     
            self.btnnavframe=ctk.CTkFrame(self)
            self.btnnavframe.grid(row=1,column=0,padx=5,pady=5,sticky='ew')
     
            self.frame=ctk.CTkScrollableFrame(self,orientation='horizontal')
            self.frame.grid(row=2,column=0,padx=5,pady=5,sticky='ew')
     
     
            self.listbtn:dict[str,AppBtn]={}
            self.listetapeframe:dict[str,ctk.CTkFrame]={}
            i=0
            for etape in self.etapes:
                self.btnnavframe.columnconfigure(i,weight=1)
                self.listbtn[etape]=AppBtn(self.btnnavframe,text=etape,command=lambda e=etape: self.btnetapeclick(e),fg_color='#a3a3c2')
                self.listbtn[etape].grid(row=0,column=i,padx=5,sticky='ew')
     
                self.frame.columnconfigure(i,weight=1)
                self.listetapeframe[etape]=ctk.CTkFrame(self.frame,width=1000,fg_color='#a3a3c2')
                self.listetapeframe[etape].grid(row=0,column=i,padx=5,pady=5,sticky='ns')
                self.etapeframetitle=ctk.CTkLabel(self.listetapeframe[etape],text=etape)
                self.etapeframetitle.grid(row=0,column=0,padx=5,pady=5,sticky='ns')
     
                i+=1
     
        def btnetapeclick(self,etape):
            for i in range(len(self.etapes)):
                if self.etapes[i]==etape:
                    self.listbtn[self.etapes[i]].on()
                    moveto=i
                else:
                    self.listbtn[self.etapes[i]].off()
     
     
     
     
    window=MainWindow()
    window.mainloop()

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 044
    Par défaut
    Bonjour,

    La méthode grid_propagate permet d'empêcher le redimensionnement dès le redimensionnement automatique des widgets dans une frame.

  3. #3
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Mars 2022
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Mars 2022
    Messages : 15
    Par défaut
    Yes!!! merci!

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

Discussions similaires

  1. [Python 3.X] grid Method? CustomTkinter je ne comprends pas bien
    Par onlyforpeace dans le forum Tkinter
    Réponses: 7
    Dernier message: 11/11/2023, 16h19
  2. Réponses: 3
    Dernier message: 22/11/2015, 13h38
  3. ScrolledFrame et méthode grid()
    Par Maestro31 dans le forum Tkinter
    Réponses: 7
    Dernier message: 28/08/2011, 12h35
  4. Réponses: 5
    Dernier message: 25/03/2008, 11h31
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

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