PyQt Quickie: parsear línea de comandos
opt_parser = OptionParser() opt_parser.add_option("-q", dest="quickly", action="store_true", help="Do it quickly (default=False)") (options, args) = opt_parser.parse_args(sys.argv) app = QApplication(sys.argv) : : :
O tal vez incluso QApplication([])
. Bueno, eso está mal. Y está mal en casi todos los tutoriales, también. ¿Porqué? Porque Qt (y por lo tanto PyQt) soporta un montón de opciones útiles. Al hacerlo como en ese primer listado, si le pasás "-style=oxygen" o lo que sea, va a pasar alguna de estas cosas:
OptParser te va a decir que es una opción inválida y abortar
Vas a ignorar la opción y no vas a hacer nada útil con ella
Vas a tener tu propia opción -style y vas a hacer dos cosas
Ninguna de esas opciones es la idea. La manera correcta de hacerlo es ésta:
opt_parser = OptionParser() opt_parser.add_option("-q", dest="quickly", action="store_true", help="Do it quickly (default=False)") app = QApplication(sys.argv) (options, args) = opt_parser.parse_args(app.arguments()) : : :
De esta manera, le das a PyQt la oportunidad de procesar las opciones que reconoce y después, vos manejás el resto, porque a app.arguments()
ya le sacaron todas las opciones de Qt.
El lado malo es que --help
va a ser mas lento, porque tiene que instanciar QApplication
al divino botón, y vas a tener opciones no
documentadas. Soluciones para ambos problemas se dejan como ejercicio.
I'm surprise I did this correctly without knowing that I was correctly parsing the qt args.. luck I suppose :)