2012-05-17 2 views
0

Это немного концептуальный вопрос.Передача обновлений GUI извне класса обратного вызова

Я изучаю Python. Я построил графический интерфейс и класс обратного вызова для обработки событий. Я бы хотел, чтобы класс обратного вызова просто обрабатывал события и вызывал методы в другом .py-файле, где выполняется вся тяжелая работа.

Однако у меня есть индикатор выполнения в моем графическом интерфейсе и подробное окно, которое отображает всю работу, выполняемую процессом.

Если у меня есть все методы тяжелой работы внутри класса обратного вызова, можно легко обновлять индикатор и окно детализации, а затем вызвать:

while gtk.events_pending(): 
    gtk.main_iteration() 

Чтобы обновить графический интерфейс, прежде чем делать больше работы.

Но как это сделать, если мои тяжелые методы работы, которые также обновляют графический интерфейс, размещаются в собственном собственном .py файле/классе?

Вот мой пример:

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

#Some work before here 

for root, subdirs, files in os.walk(directoryname, True): 
    for fileName in files: 
     totalFileCount = totalFileCount + 1 

self.textBuffer.insert(self.textBuffer.get_end_iter(), 
         "Number of files and subdirs found for " 
         + directoryname + ": " 
         + str(totalFileCount) + "\n") 
self.textViewDetail.scroll_to_iter(self.textBuffer.get_end_iter(), 
            0, 
            False, 
            0, 
            0) 
self.walkProgress = progressbar.progressBar(0, totalFileCount) 

while gtk.events_pending(): 
    gtk.main_iteration() 

#some more work after here 

Я думаю, что это разъединение в моем понимании того, как классы предположим, что работать, и мое чтение документации не дает мне намного дальше.

Спасибо.

ответ

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