<div dir="ltr"><div><div><div><div>The PyQt5 docs explicitly say not to put the application startup logic in a function e.g. main():<br><br><a href="http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html#object-destruction-on-exit">http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html#object-destruction-on-exit</a><br><br></div>Whereas setuptools and its entry_points feature requires the startup logic be in a function.<br><br></div>From looking through a bunch of projects on github, I see that the great majority simply ignore the official PyQt5 advice, and have a main() type function with all their startup logic. <br><br></div>However at least one project takes the approach of deleting PyQt objects before exit (drawing on an insight offered by Dr. Koval):<br><br><span style="font-family:monospace,monospace">def main():<br>    import sys<br>    app = QtGui.QApplication(sys.argv)<br>    window = DataViz()<br>    window.show()<br>    app.exec_()<br>    # fixed segfaults at exit:<br>    # <a href="http://python.6.x6.nabble.com/Application-crash-on-exit-under-Linux-td5067510.html">http://python.6.x6.nabble.com/Application-crash-on-exit-under-Linux-td5067510.html</a><br>    del window<br>    del app   <br>    sys.exit(0)<br><br>if __name__ == '__main__':<br>    main()<br></span><br><br>Source: <a href="https://github.com/subhacom/dataviz/blob/e62a591149750e5e5d21f13b4dfee28409a3d683/dataviz/dataviz.py">https://github.com/subhacom/dataviz/blob/e62a591149750e5e5d21f13b4dfee28409a3d683/dataviz/dataviz.py</a><br><br></div><div>Is this approach guaranteed to work as well as the approach specified in the official docs?<br><br></div><div>Thanks<br></div><div>Damon<br></div><br><br><br clear="all"><div><div><div><div><div><div><br>-- <br><div class="gmail_signature"><a href="http://www.damonlynch.net" target="_blank">http://www.damonlynch.net</a><div></div><div></div><div></div></div>
</div></div></div></div></div></div></div>