我目前正在编写一个PyGTK应用程序,我想要一些关于构建我的应用程序的最佳方式的建议。基本上,应用程序将读取特定的文件规范,并将其显示在GUI中进行编辑。在
目前我有一个分析器.py它处理所有低级文件IO和文件解析。我在treeview中显示文件的内容,这意味着我需要使用treestore作为我的数据类型。在
我遇到的问题是我对这个问题只想出了两种解决办法。首先,我的解析器可以构建一个treestore并将其传递给我的ui类。这需要依赖于pygtk的解析器,并将类的潜在重用最小化。第二种方法是在解析器中存储对ui类的引用,这也可能会限制解析器类作为独立库的重用。在
把我的问题浓缩成一句简短的话:有没有一种方法可以用一种更为Python式或OO友好的方式来实现我的目标?在
如果查看我的代码可以帮助任何人回答我的问题:https://code.launchpad.net/~blainepace/nbtparser/trunk
Py>其他python建议欢迎,这是我的第一个Python程序,我可能会陷入更多的C++思维方式。我计划重构很多。在
你应该看看教程"Sub-classing GObject in Python"。这需要使用GObject的类型系统来创建信号和属性,这允许您以一种易于与典型PyGTK语义(连接到信号、等待属性通知等)集成的方式对底层行为进行建模。在
解析器和UI都应该只有属性和信号可以连接。然后有第三个类连接这些信号和回调,并在
if __name__ == __main__
块中启动主循环。在通常,我的看起来像:
…然后在主脚本中:
^{pr2}$当然,这通常是不同的,取决于我是否在使用空地?我是为主应用程序的小部件分类还是包装它们?等等
这样做的好处在于,你可以编写一个测试解析器,它只返回预先编程的响应,或者使用已知的测试文件。将其换入就像更改上面的一行一样简单:
相关问题 更多 >
编程相关推荐