2010-11-03 2 views
0

Я хочу, чтобы этот код, чтобы сделать это:Tkinter: сеточный метод странное поведение

Создание 4 кадра с использованием этого макета (тире означает, кадр охватывает этот столбец):

-X- 
XXX 

В каждом из этих кадров (X в) должно быть два ряда, как это:

cowN,1 
cowN,2 

Похоже, что в сетке() метод глобальныйТОЛЬКО и никогда не специфично для одного кадра ...

#!/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() 

ответ

2

Проблемы с кодом является то, что ваш не сохраняя ссылку на Frame объектов на ваших frameN переменных: вы создаете объекты, и вызвать их grid метод: вы сохраняете возврат метода сетки к переменным, который равен None.

Итак, ваши метки создаются с помощью None в качестве их владельца.

Просто измените строки следующим образом:

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

Спасибо, что было полезно. :) – thenickname

Смежные вопросы