0

这是一个概念性的问题。

我正在学习 Python。我构建了一个 GUI 和一个回调类来处理事件。我想让回调类只处理事件,并在另一个 .py 文件中调用方法,所有繁重的工作实际上都完成了。

但是,我的 GUI 中有一个进度条和一个详细信息窗口,其中显示了该过程正在执行的所有工作。

如果我在回调类中拥有所有繁重的工作方法,我可以轻松更新进度条和详细信息窗口,然后调用:

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

在做更多工作之前更新 GUI。

但是,如果我的繁重工作方法(也更新了 GUI)被放置在它们自己的 .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

我认为,这是我对类应该如何工作的理解的脱节,而且我对文档的阅读并没有让我走得更远。

谢谢。

4

1 回答 1

0

试试这个技术:

http://unpythonic.blogspot.com/2007/08/using-threads-in-pygtk.html

于 2012-05-17T19:34:31.550 回答