2016-03-03 45 views

回答

5

一般来说,最好指定一个家长尽可能,因为它可以帮助避免对象清理问题。这是退出程序时最常见的情况,当python垃圾收集器的固有随机性可能意味着对象有时会以错误的顺序被删除,导致程序崩溃。

但是,这个问题的发现通常不会影响标准的GUI小部件,因为一旦将它们添加到布局中,Qt就会自动重新映射它们。问题越多的对象就像项目模型,项目代表,图形场景等,它们与视图紧密相关。

理想情况下,一个pyqt程序应该有一个根窗口,所有其他对象连接到父子层次结构中。当根被删除/关闭时,Qt也会递归地删除它的所有子对象。这应该只留下pyqt包装器对象,这可以安全地留给python垃圾收集器清理。

指定父母的一个更具建设性的好处是,它只是使对象更容易彼此访问。例如,一个常见的习惯用法是通过它们的父代迭代一组按钮:

for button in parent.findChildren(QAbstractButton): 
     print(button.text()) 
+0

感谢您的好评和详细的答案! –