pycxsimulator TclError Ubuntu

Попытка запустить этот маленький кусочек кода на Ubuntu 14.04

import matplotlib
matplotlib.use('TkAgg')

import pylab as PL
import random as RD
import scipy as SP

RD.seed()

populationSize = 100
noiseLevel = 1

def init():
    global time, agents

    time = 0

    agents = []
    for i in xrange(populationSize):
        newAgent = [RD.gauss(0, 1), RD.gauss(0, 1)]
        agents.append(newAgent)

def draw():
    PL.cla()
    x = [ag[0] for ag in agents]
    y = [ag[1] for ag in agents]
    PL.plot(x, y, 'bo')
    PL.axis('scaled')
    PL.axis([-100, 100, -100, 100])
    PL.title('t = ' + str(time))

def step():
    global time, agents

    time += 1

    for ag in agents:
        ag[0] += RD.gauss(0, noiseLevel)
        ag[1] += RD.gauss(0, noiseLevel)

import pycxsimulator
pycxsimulator.GUI().start(func=[init,draw,step])

но получил следующее сообщение об ошибке:

Traceback (most recent call last):
  File "/home/joaomeirelles/Documents/USP/TESE/exemplos/pycx-0.31/abm-randomwalk.py", line 49, in <module>
pycxsimulator.GUI().start(func=[init,draw,step])
  File "/home/joaomeirelles/Documents/USP/TESE/exemplos/pycx-0.31/pycxsimulator.py", line 48, in __init__
self.initGUI()
  File "/home/joaomeirelles/Documents/USP/TESE/exemplos/pycx-0.31/pycxsimulator.py", line 77, in initGUI
self.status.grid(row=1,column=0,padx=2,pady=2,sticky='nswe')
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1985, in grid_configure
+ self._options(cnf, kw))
_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack
[Finished in 0.4s with exit code 1]

Кто-нибудь знает, что это может быть? Я пытался использовать разные версии Tcl / Tk (8.5 и 8.6) и обновлять MGLTools, но ни одна из них не работала.

спасибо JM

2 ответа

Я закомментировал строку 75: #self.notebook.pack(разверните = ДА, заполните = ОБА, padx=5, pady=5, сторона =TOP) и строку 78: #self.status.pack(side=TOP, fill=X, padx=1, pady=1, расширение = НЕТ)

После этого модели, которые я попробовал, все работало.

Сообщение об ошибке говорит вам, в чем именно заключается проблема:

не может использовать сетку менеджера геометрии внутри. который уже имеет рабов, управляемых пакетом

Это означает, что где-то в вашем коде вы звоните .pack(...) на виджете, который является дочерним элементом корневого окна ("подчиненные управляемые пакетом"), а позже вы звоните .grid(...) на другом виджете, который также является дочерним элементом корневого окна ("не может использовать сетку менеджера геометрии...").

В пределах любого данного окна контейнера (фрейма, корневого окна, верхнего уровня) все прямые дочерние элементы могут управляться только сеткой ИЛИ пакетом, но не обоими.

Другие вопросы по тегам