2010-11-03 30 views
0

Je veux que ce code pour faire ceci:tkinter: comportement étrange méthode de la grille

Créer 4 images avec cette disposition (tirets signifient le cadre couvre cette colonne):

-X- 
XXX 

Dans chacune de ces cadres (X de) il devrait y avoir deux lignes comme celle-ci:

cowN,1 
cowN,2 

Il semble que la grille() est globaleSEULEMENT et n'est jamais spécifique à un seul cadre ...

#!/usr/apps/Python/bin/python 
from Tkinter import * 

master = Tk() 

frame1 = Frame(master).grid(row=0,columnspan=3) 
frame2 = Frame(master).grid(row=1,column=0) 
frame3 = Frame(master).grid(row=1,column=1) 
frame4 = Frame(master).grid(row=1,column=2) 
#->Frame1 contents 
Label(frame1, text='cow1,1').grid(row=0) 
Label(frame1, text='cow1,2').grid(row=1) 
#->Frame2 contents 
Label(frame2, text='cow2,1').grid(row=0) 
Label(frame2, text='cow2,2').grid(row=1) 
#->Frame3 contents 
Label(frame3, text='cow3,1').grid(row=0) 
Label(frame3, text='cow3,2').grid(row=1) 
#->Frame4 contents 
Label(frame4, text='cow4,1').grid(row=0) 
Label(frame4, text='cow4,2').grid(row=1) 

master.mainloop() 

Répondre

2

Le problème avec votre code est que vous n'êtes pas en gardant une référence aux Frame objets sur vos frameN variables que vous créez les objets, et d'appeler leurs grid méthode: vous stockez le retour de la méthode de grille sur les variables, qui est None. Par conséquent, vos étiquettes sont créées avec None comme maître.

il suffit de changer vos lignes à lire:

frame1 = Frame(master); 
frame1.grid(row=0, columnspan=3) 
+0

Merci, cela a été utile. :) – thenickname