Я создаю небольшой инструмент для визуализации данных.
GUI создан с помощью Pygtk и очень прост. После того, как пользователь ввел имя файла, он может нажать кнопку «calc», чтобы увидеть результат. Выходные данные отрисовываются Pycairo и представляются в виде gtk.DrawingArea.
Приложение работает следующим образом:
При нажатии кнопки файл обрабатывается, а его содержимое сохраняется в специальном классе. Этот класс является пользовательским контейнером: он создается вместе с графическим интерфейсом и либо пуст, либо заполнен. Событие выставления DrawingArea связано с функцией рисования, которая читает контейнер и рисует его содержимое. Пока контейнер пуст, DrawingArea остается пустым, но после нажатия кнопки calc и загрузки файла DrawingArea должно быть заполнено моими визуальными элементами.
Проблема в том, что:
Все отлично работает, кроме обновления DrawingArea. Я не могу понять, как вручную вызвать выставить. После нажатия calc я должен изменить размер окна, чтобы увидеть результат.
Более конкретно:
Я скопировал этот код из учебника и сам не знаю, как предоставить событие параметра:
def do_expose_event(self,event):
# Create the cairo context
cr = self.window.cairo_create()
# Restrict Cairo to the exposed area; avoid extra work
cr.rectangle(event.area.x, event.area.y,
event.area.width, event.area.height)
cr.clip()
self.draw(cr, *self.window.get_size())