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()