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