Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

The Mirage

Review:

A very in­ter­est­ing, big-­heart­ed and dif­fer­ent take on al­ter­nate his­to­ry. Worth read­ing.

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 QA­ppli­ca­tio­n([]). 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:

  1. Op­­tPa­r­­ser te va a de­­cir que es una op­­ción in­­vá­­li­­da y abo­r­­tar

  2. Vas a ig­­no­­­rar la op­­ción y no vas a ha­­cer na­­da útil con ella

  3. Vas a te­­ner tu pro­­­pia op­­ción -s­­ty­­le y vas a ha­­cer dos co­­sas

Nin­gu­na de esas op­cio­nes es la idea. La ma­ne­ra co­rrec­ta de ha­cer­lo es és­ta:

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.

Los Símbolos Feos

Yo res­pon­dí ti­po "si al­gu­na vez ne­ce­si­to lle­var gen­te a una ba­ta­lla, voy a usar una ban­de­ra fea (po­ne­le, una mu­li­ta er­gui­da), así al me­nos voy a sa­ber que es­tán ahí por­que quie­ren y no por el ma­rke­tin­g". Lo que es pro­ba­ble­men­te una co­sa bas­tan­te pe­lo­tu­da aún pa­ra mis stan­dar­d­s, pe­ro:

  1. Es­­ta­­ba en 3er fe­r­­net

  2. Es­­ta­­ba tro­­­llean­­do al pi­­be

  3. Drunk tro­­­ll was drunk

  4. Me­­dio que lo creo

Es una es­tu­pi­dez por­que só­lo acep­tar la ayu­da de los cre­yen­tes y no tra­tar de ha­cer que los de­más crean es una bue­na ma­ne­ra de ase­gu­rar­se que con­tás con tan só­lo una en­fer­vo­ri­za­da mi­no­ría de par­ti­da­rios (in­ser­tar chis­te de "El año de Li­nux en el es­cri­to­rio­").

Pe­ro me­dio que lo creo, por­que ser feo y que te quie­ran es más cá­li­do que que te quie­ran cuan­do sos lin­do, y por­que ser com­pli­ca­do y apre­cia­do es más va­lio­so que ser ac­ce­si­ble y apre­cia­do. Pe­ro eso só­lo fun­cio­na si sos di­fí­cil de ver­da­d, y no a pro­pó­si­to, por­que eso es po­se. Y feo en se­rio, no co­mo Char­li­ze The­ron con ma­qui­lla­je de gor­da.

¿En­ton­ce­s, has­ta qué pun­to es uno mo­les­to de for­ma ho­nes­ta? Es­a, ami­gos es la cues­tió­n. Y si al­gu­na vez ten­go que li­de­rar a al­guien es­pe­ro po­der ha­cer­lo co­mo yo mis­mo, y que ellos ven­gan por­que se les can­ta el tu­je­s, no por­que se los di­go.

No es­toy acá pa­ra con­ven­cer gen­te. Es­toy acá pa­ra co­no­cer gen­te.


Contents © 2000-2021 Roberto Alsina