私のPyGTKアプリケーションは、結果のプレビューを表示するためのセカンダリポップアップウィンドウを作成します。このウィンドウはかなり複雑で、テーブルウィジェットは3つの深さでネストされ、最下位レベルにそれぞれ1つのラベルを含むHBoxが配置されています。ラベルの総数は数千に達する可能性があります。このウィンドウを閉じると、GTKが何かを処理するのに非常に忙しくなり(gobject.idle_addで追加された関数が10秒以上解決されない)、この時間にアプリケーションのメインウィンドウが応答しなくなることに気づきました。これだけ多くのウィジェットを使用しても、ウィンドウを閉じるのに非常に長い時間がかかり、セットアップと表示にかかる時間よりも長くなるのは不思議に思えます。これを軽減する方法はありますか?(別のスレッドでウィンドウを作成して表示しようとしましたが、GTKではこれはノーノーです)
質問する
87 次
2 に答える
1
そのウィンドウが表示されるまでどのくらいかかりますか?表示時にすべてのウィジェットが一度に作成されますか?
あなたの問題はあなたの何千ものウィジェットの破壊によって引き起こされるかもしれません、すべて同時に。または、長いアクションによって、これらのウィジェットの破壊を実行します。しかし、見るべきコードがなければ、何千もの理由がある可能性があるので、ptomatoはプロファイラーを使用すると言います...
于 2013-01-04T12:04:35.340 に答える
0
どうやらそれはテーブルの背景色を変更しようとしたことが原因だったようです-私はすべてのHBox(およびラベル)の背景色を設定していました。これは、過剰な分解時間のほぼすべての原因でした。私がしなければならなかったのは、テーブルが含まれているビューポートの背景色を設定することだけでした。
于 2013-01-04T15:53:23.003 に答える