====== Autocompletion and calltip tests for PyQt4 on various IDEs ====== ===== Tempalate ===== if __name__ == '__main__': # create application app = QApplication(sys.argv) app.setApplicationName('My PyQt4 QtGui Project') # create widget w = MainWindow() w.setWindowTitle('My PyQt4 QtGui Project') w.show() # connection QObject.connect(app, SIGNAL('lastWindowClosed()'), app, SLOT('quit()')) # execute application sys.exit(app.exec_()) ############################ open() This is from my {{:qt:evalpyqt.zip|EvalPyQt}} example project (except for the last line). All IDEs were set up with this project. Then everything after if __name__ == '__main__': in ''main.py'' was removed and the document saved. Then the code was retyped. ===== Eclipse + PyDev ===== if __name__ == '__main__': # create application app = QApplication(sys.argv) # good app.setApplicationName('My PyQt4 QtGui Project') # requesting completion removed calltip # create widget w = MainWindow() # good w.setWindowTitle('My PyQt4 QtGui Project') # w's setWindowTitle not detected, no calltip w.show() # w's show not detected # connection QObject.connect(app, SIGNAL('lastWindowClosed()'), app, SLOT('quit()')) # completion inserted useful placeholders :-))) # execute application sys.exit(app.exec_()) # good ############################ open() # good, placeholder inserted => Major disadvantage over Spyder: calltips disappear the instant you hit a completing ')' -- even when auto-close brackets is enabled. Disabling autoclose ')' also disables autoclose of ']', and '}' Syntax error markers can be slow and obtrusive. ===== Editra ===== if __name__ == '__main__': # create application app = QApplication(sys.argv) # good app.setApplicationName('My PyQt4 QtGui Project') # good # create widget w = MainWindow() # didn't find MainWindow w.setWindowTitle('My PyQt4 QtGui Project') # didn't find setWindowTitle w.show() # didn't find show # connection QObject.connect(app, SIGNAL('lastWindowClosed()'), app, SLOT('quit()')) # good # execute application sys.exit(app.exec_()) #good ############################ open() # calltip very helpful Calltips remain onscreen throughout typing. ===== Eric (Assistant handles both) ===== if __name__ == '__main__': # create application app = QApplication(sys.argv) # didn't detect sys.argv app.setApplicationName('My PyQt4 QtGui Project') # slow to find stuff # create widget w = MainWindow() # good w.setWindowTitle('My PyQt4 QtGui Project') # suggested all sorts of irrelevant stuff w.show() # suggested all sorts of irrelevant stuff # connection QObject.connect(app, SIGNAL('lastWindowClosed()'), app, SLOT('quit()')) # suggested all sorts of irrelevant stuff, calltip useful # found and suggested SIGNAL and SLOT! # execute application sys.exit(app.exec_()) # found app.exec_ but also suggested all sorts of irrelevant stuff ############################ open() # didn't find built-in open but suggested many others Calltips remain onscreen throughout typing. ===== Eric (Rope for autocomplete, Assistant for calltips) ===== if __name__ == '__main__': # create application app = QApplication(sys.argv) # good app.setApplicationName('My PyQt4 QtGui Project') # good # create widget w = MainWindow() # good w.setWindowTitle('My PyQt4 QtGui Project') # ac, didn't find setWindowTitle method; calltip suggested useful stuff w.show() # ac, didn't find show method; calltip suggested useful stuff # connection QObject.connect(app, SIGNAL('lastWindowClosed()'), app, SLOT('quit()')) # good; didn't find SIGNAL ac but found calltip # execute application sys.exit(app.exec_()) # app.exec_ calling was irrelevant ############################ open() # didn't find built-in open but suggested many others Calltips remain onscreen throughout typing. ===== Spyder ===== if __name__ == '__main__': # create application app = QApplication(sys.argv) # worked, but calltip/doc not that helpful app.setApplicationName('My PyQt4 QtGui Project') # good # create widget w = MainWindow() # good w.setWindowTitle('My PyQt4 QtGui Project') # w's setWindowTitle not detected, no calltip w.show() # w's show not detected # connection QObject.connect(app, SIGNAL('lastWindowClosed()'), app, SLOT('quit()')) # good, calltip/doc not that helpful # no help at all in suggesting signals and slots # execute application sys.exit(app.exec_()) # no ac until 'sys.e', calltip not helpful; ac at 'app.e', calltip helpful! ############################ open() # completion at 'o', calltip/doc is helpful A huge win for Spyder is that the docs remain onscreen after the calltips have disappeared. Syntax error markers can be very slow.