Probleme tkinter avec les grid et pack
Bonjour,
J'ai un problème pour positionner des widgets
Voilà le programme défaillant :
... et les fonctions que j'utilise :
Ma fenêtre possède plusieurs frames avec différents widgets (frame, frame2, right_frame) et j'ai fait deux boutons qui me permettent de basculer d'un ensemble de frames à un autre, de sorte à faire un menu. Pour cela, j'ai utilisé la méthode
Mon code parle d'un tableau, car c'est ce que je veux construire. J'ai donc répété la création d'une entrée de sorte à en construire une par cellule (cell). Cette partie-la, je ne l'ai pas développée, car je bloque sur le positionnement du tableau.
Voila voila, merci de votre intelligence =)
J'ai un problème pour positionner des widgets
tk.Entry: j'utilise la méthode
grid(), mais lorsque j'essaie de lancer le programme je reçois cette erreur :
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files (x86)\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:/Users/jocez/PycharmProjects/pythonProject1/password_generator.py", line 89, in <lambda>
menu_tableau = Button(frame3, text='Stockage', font=('Helvetica', 25), bg='#4065A4', fg='white', justify=LEFT, command = lambda :stock_page())
File "C:/Users/jocez/PycharmProjects/pythonProject1/password_generator.py", line 42, in stock_page
frame_tableau1.grid(row=2, column=1)
File "C:\Program Files (x86)\Python38-32\lib\tkinter\__init__.py", line 2484, in grid_configure
self.tk.call(
_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack
Voilà le programme défaillant :
# creation frames frame_tableau1 = Frame(window, bg='#4065A4') frame_tableau2 = Frame(window, bg='#4065A4') # creation tableau for x in range(8) : cell = Entry(frame_tableau1, font=('Helvetica'), bg='black', fg='white') cell.grid(row=1, column=1) for x in range(8) : cell = Entry(frame_tableau2, font=('Helvetica'), bg='black', fg='white') cell.grid(row=1, column=1)
... et les fonctions que j'utilise :
def generation_page() : frame.pack() frame2.pack() right_frame.pack() frame_tableau1.grid_forget() frame_tableau2.grid_forget() def stock_page() : frame.pack_forget() frame2.pack_forget() right_frame.pack_forget() frame_tableau1.grid(row=2, column=1) frame_tableau2.grid(row=2, column=2)
Ma fenêtre possède plusieurs frames avec différents widgets (frame, frame2, right_frame) et j'ai fait deux boutons qui me permettent de basculer d'un ensemble de frames à un autre, de sorte à faire un menu. Pour cela, j'ai utilisé la méthode
forget().
Mon code parle d'un tableau, car c'est ce que je veux construire. J'ai donc répété la création d'une entrée de sorte à en construire une par cellule (cell). Cette partie-la, je ne l'ai pas développée, car je bloque sur le positionnement du tableau.
Voila voila, merci de votre intelligence =)
A voir également:
- Cannot use geometry manager grid inside . which already has slaves managed by pack
- Wbfs manager - Télécharger - Sauvegarde
- Money manager ex - Télécharger - Bourse & Finance
- Picture manager - Télécharger - Retouche d'image
- Pack office pas cher - Guide
- Copytrans manager - Télécharger - Lecture & Playlists
2 réponses
oups j'a oublié d'activer les notifications.... =(
(message pour que je les actives, merci de répondre donc a ce message )
(message pour que je les actives, merci de répondre donc a ce message )
Bonjour,
l'indentation étant importante en Python, peux-tu afficher ton code avec les balises:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
l'indentation étant importante en Python, peux-tu afficher ton code avec les balises:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Petite précision à balkis car ça n'est pas la première fois que je corrige tes messages. Tu utilises mal les balises. Le code doit être encadré par la balise ouvrante (e.g.
Concernant ta question, as-tu regardé ce tutoriel ?
<code python>) et la balise fermante (
</ code>-- je rajoute une espace derrière le / pour que mon message s'affiche bien sur le site mais il ne faut pas le rajouter) donc par exemple :
<code python> def toto(): pass </ code>
Concernant ta question, as-tu regardé ce tutoriel ?