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 に答える