Probleme de gestion de frames
xunil2003
Messages postés
765
Date d'inscription
Statut
Membre
Dernière intervention
-
goplin -
goplin -
Bonjour,
Je suis sous python 3 et j’essaie d'avoir ce résultat avec frame
mon code :
en vin, je n'y arrive pas. Pouvez vous m'expliquer pourquoi ?
Merci d'avance pour vos avis et conseils.
Configuration: Linux / Firefox 100.0
Je suis sous python 3 et j’essaie d'avoir ce résultat avec frame
+----------------------------------------------------+---------------+---------------+
| Frame 0 |
+----------------------------------------------------+---------------+---------------+
| | Frame 2 | Frame 3 |
| | | |
| | | |
| Frame 1 |---------------+---------------+
| | Frame 4 | Frame 5 |
| | | |
| | | |
+----------------------------------------------------+---------------+---------------+
mon code :
def frames()
frame0 = tk.Frame(fp, width=400, height=40, bg="orange", relief=FLAT, borderwidth=5)
frame0.pack(fill=tk.BOTH, side=tk.TOP)
frame1 = tk.Frame(fp, width=200, bg="red")
frame1.pack(fill=tk.BOTH, side=tk.LEFT, expand=True)
frame2 = tk.Frame(fp, width=50, bg="grey") #<--------
frame2.pack(fill=tk.BOTH, side=tk.LEFT) #, expand=True)
frame3 = tk.Frame(fp, width=50, bg="blue")
frame3.pack(fill=tk.BOTH, side=tk.LEFT)#, expand=True)
frame4 = tk.Frame(fp, width=50, bg="pink")
frame4.pack(fill=tk.BOTH, side=tk.TOP)
frame5 = tk.Frame(fp, width=50, bg="purple")
frame5.pack(fill=tk.BOTH, side=tk.RIGHT)#, expand=True)
label = tk.Label(frame0, text=" Frame 0 ").pack()
label = Label(frame1, text="Frame 1").pack()
label = Label(frame2, text="Frame 2").pack()
label = Label(frame3, text="Frame 3").pack()
label = Label(frame4, text="Frame 4").pack()
label = Label(frame5, text="Frame 5").pack()
en vin, je n'y arrive pas. Pouvez vous m'expliquer pourquoi ?
Merci d'avance pour vos avis et conseils.
Configuration: Linux / Firefox 100.0
A voir également:
- Probleme de gestion de frames
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
- Gestion autorisation application android - Guide
- Telecharger logiciel de gestion d'association gratuit - Télécharger - Gestion de projets
1 réponse
Bonsoir,
Je ne sais si tu as trouvé comment disposer tes frames sous forme de tableau, mais je donne tout de même un semblant d'exemple.
Je pense que le gestionnaire grid est bien plus adapté pour faire un tableau de frames que pack.
Exemple en utilisant grid, j'ai mis des dimensions pour l'exemple, à toi d'adapter, ce qu'il faut bien comprendre, est l'utilisation conjointe du sticky dans le grid avec les fusions de cellules et colonnes(comme dans un tableau d'une page html ou encore d'un traitement de texte).
Si tu as besoin d'éclaircissements sur certains points de ce code, n'hésite pas =)
Je ne sais si tu as trouvé comment disposer tes frames sous forme de tableau, mais je donne tout de même un semblant d'exemple.
Je pense que le gestionnaire grid est bien plus adapté pour faire un tableau de frames que pack.
Exemple en utilisant grid, j'ai mis des dimensions pour l'exemple, à toi d'adapter, ce qu'il faut bien comprendre, est l'utilisation conjointe du sticky dans le grid avec les fusions de cellules et colonnes(comme dans un tableau d'une page html ou encore d'un traitement de texte).
import tkinter as tk def frames_build(master): ct = tk.Frame(master) ct.grid() frames = {} frames[0] = tk.Frame(ct, width=400, height=40, bg='orange', relief=tk.FLAT, borderwidth=5) frames[0].grid(columnspan=3, sticky=tk.NSEW) frames[1] = tk.Frame(ct, width=240, height=200, bg='red') frames[1].grid(row=1, column=0, rowspan=2, sticky=tk.NSEW) # les 4 frames restantes frames_param = (('grey', 1, 1), ('pink', 1, 2), ('blue', 2, 1), ('purple', 2, 2),) for i, (bg, row, col) in enumerate(frames_param, start=2): frames[i] = tk.Frame(ct, width=80, height=100, bg=bg) frames[i].grid(row=row, column=col, sticky=tk.NSEW) for i in range(6): frames[i].grid_propagate(0) # Permet aux frames de perdre leur "élasticité" # permet de centrer le label dans les frames (cas de widget enfant unique) frames[i].rowconfigure(0, weight=1) frames[i].columnconfigure(0, weight=1) lbl = tk.Label(frames[i], text=f'frame {i}', anchor=tk.CENTER) lbl.grid() window = tk.Tk() frames_build(window) window.mainloop()
Si tu as besoin d'éclaircissements sur certains points de ce code, n'hésite pas =)