2014-10-28 3 views
1

При попытке удалить сюжет из виджета Graph он корректно удаляется из холста _plot_area, но он не удаляется, пока я не изменю размер окна. Я попытался вызвать триггеры _redraw и _redraw_all из класса Graph, но они не работают.Удалить участок в графике kivy

Как удалить участок и удалить его напрямую? Пример:

graph = Graph() 
    plot = MeshLinePlot(mode='line_strip', color=[1, 0, 0, 1]) 
    plot.points = [(x/10., sin(x/50.)) for x in xrange(-0, 101)] 
    graph.add_plot(plot) 
    graph.remove_plot(plot) 

Участок удален, но он не исчезнет, ​​пока не изменять размер окна

+0

Выглядит немного как ошибка ... – matsjoyce

+0

Черт. Во всяком случае, есть ли способ заставить окно перерисовать, чтобы имитировать изменение размера? – UncleSax

+0

Jut на данный момент я вызываю изменение размера окна таким образом. Он работает, но это похоже на ад ... 'Window._size = [Window.width, Window.height-1] Window._size = [Window.width, Window.height + 1]' – UncleSax

ответ

1

ОК, я нашел решение. После того как вы позвоните graph.remove_plot(plot), положите graph._clear_buffer(). Поскольку это кажется ошибкой (он должен делать это автоматически, если это скрытый метод), поэтому я отправил pull request to the repo.

+0

Это верно. Похоже, что буфер fbo не смог очиститься. Попытка прямого вызова '_clear_buffer()' в любом случае не будет работать: вы должны переписать его, проходя через элемент 'graph._fbo'. Надеюсь, что вы не возражаете, я обновил ответ – UncleSax

+0

@UncleSax Calling напрямую работал для меня (python 3) ... Вы искали в классе dict или dict dict? – matsjoyce

+0

Ммм Я нахожусь на python2.7. Может быть, это почему ... – UncleSax

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