如何处理具有许多窗口的林间空地项目

时间:2008-12-03 01:39:51

标签: python gtk pygtk glade

我正在开发一个PyGTK / glade应用程序,目前有16个窗口/对话框,大约130KB,最终将有大约25个窗口/对话框,大约200KB。目前,我将所有窗口存储在一个整体的glade文件中。当我运行一个窗口时,我称之为......

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

我想知道将每个窗口拆分成自己的glade文件是否更好。我没有一个带有25个窗口/对话框的glade文件,而是有25个glade文件,每个文件有一个窗口/对话框,并按如下方式调用它:

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

你们认为最好的方法是什么?一种方法比另一种方法更耗费资源吗?关于单个glade文件的一件好事是命名小部件会更容易。例如,我将所有OK按钮命名为“windowxyz_ok”,但我可以将其更改为“ok”。使事情变得更简单。缺点是对不同的窗口进行更改可能不太方便。

我对所有论点持开放态度。谢谢!

4 个答案:

答案 0 :(得分:9)

在我的项目中,每个林间空地文件总是有一个窗口。我建议你的项目也一样。

以下是两个主要原因:

  • 它会更快并且使用更少的内存,因为每次调用gtk.glade.XML()都会解析整个事情。当然,您可以传入root参数以避免为所有窗口创建窗口小部件树,但是您仍然必须解析所有XML,即使您对它不感兴趣。
  • 从概念上讲,如果每个窗口有一个顶层,则更容易理解。只需查看文件名,就可以轻松知道给定对话框/窗口所在的文件名。

答案 1 :(得分:2)

您是否采取了一些时间来确定它是否有所作为?

问题在于,据我所知,Glade在解析XML文件时总是会创建所有小部件,因此如果您打开XML文件并且只读取一个小部件,则会浪费大量资源。 / p>

另一个问题是,如果您想拥有该小部件的另一个实例,则需要重新读取该文件。

之前我做过的方法是将所有仅创建一次的小部件(如关于窗口,主窗口等)放入一个glade文件中,并为需要多次创建的小部件单独安装glade文件。 / p>

答案 2 :(得分:0)

我为不同的窗口使用不同的glade文件。但是我在同一个glade文件中保持与窗口关联的对话框。正如你所说,命名问题很烦人。

答案 3 :(得分:0)

我有一个带2个窗户的林间空地文件。它的大小约为450kb,我没有看到使用libglademm与GTKmm的任何减速。