7

現在、16 個のウィンドウ/ダイアログがあり、約 130KB の PyGTK/glade アプリケーションに取り組んでおり、最終的には約 25 個のウィンドウ/ダイアログがあり、約 200KB になります。現在、すべてのウィンドウを 1 つのモノリシック グレイド ファイルに格納しています。ウィンドウを実行すると、次のように呼び出します...

self.wTree = gtk.glade.XML("interface.glade", "WindowXYZ")

各ウィンドウを独自のグレードファイルに分割する方が良いのではないかと思います。25 個のウィンドウ/ダイアログを含む 1 つのグレード ファイルの代わりに、それぞれ 1 つのウィンドウ/ダイアログを含む 25 個のグレード ファイルを作成し、次のように呼び出します。

self.wTree = gtk.glade.XML("windowxyz.glade")

これを行うための最良の方法は何だと思いますか?ある方法は別の方法よりも多くのリソースを消費しますか? 個々のグレード ファイルに移動することの良い点の 1 つは、ウィジェットの名前付けが簡単になることです。たとえば、すべての OK ボタンに「windowxyz_ok」という名前を付けていますが、単に「ok」に変更することもできます。物事をよりシンプルにします。欠点は、さまざまなウィンドウに変更を加えるのが少し不便なことです。

私はあらゆる議論にオープンです。ありがとう!

4

4 に答える 4

9

私のプロジェクトでは、グレイド ファイルごとに常に 1 つのウィンドウがあります。あなたのプロジェクトにも同じことをお勧めします。

主な理由は次の 2 つです。

  • gtk.glade.XML() を呼び出すたびに全体が解析されるため、より高速でメモリ使用量が少なくなります。root 引数を渡してすべてのウィンドウのウィジェット ツリーを作成しないようにすることはできますが、関心がない場合でもすべての XMLを解析する必要があります。
  • ウィンドウごとに 1 つのトップレベルがあると、概念的に理解しやすくなります。ファイル名を見るだけで、特定のダイアログ/ウィンドウがどのファイル名に含まれているかを簡単に知ることができます。
于 2008-12-04T00:13:52.723 に答える
2

それが違いを生むかどうかを調べるために、いくつかのタイミングをとりましたか?

問題は、私が理解している限り、Glade は XML ファイルを解析するときに常にすべてのウィジェットを作成するため、XML ファイルを開いて 1 つのウィジェットだけを読み取ると、多くのリソースを浪費していることです。

もう 1 つの問題は、そのウィジェットの別のインスタンスが必要な場合は、ファイルを再読み込みする必要があることです。

私が以前行っていた方法は、一度だけ作成されたすべてのウィジェット (about ウィンドウ、メイン ウィンドウなど) を 1 つのグレード ファイルにまとめ、複数回作成する必要があるウィジェット用にグレード ファイルを分けていました。

于 2008-12-03T10:17:28.463 に答える
0

ウィンドウごとに異なる空き地ファイルを使用しています。しかし、私は同じ空き地ファイルのウィンドウに関連付けられたダイアログを保持します。あなたが言ったように、命名の問題は厄介です。

于 2008-12-03T16:49:09.313 に答える
0

2 つのウィンドウを持つ 1 つの空き地ファイルがあります。サイズは約 450kb で、GTKmm で libglademm を使用しても速度が低下することはありません。

于 2009-03-13T21:42:47.880 に答える