Salve a tutti,
Rieccomi a rompere le scatole... lo so, lo so...
Ho per il momento lasciato da parte il discorso PyQt5, perché Phil Tomson sta studiando il problema accessibilità... ma è stato molto collaborativo e questo mi rincuora non poco. Nel frattempo però, vorrei proseguire col mio lavoro, anche se a rilento, di creare un editor accessibile con autocompletamento del codice. Intanto sto usando il .net, con python for .net, che lavora bene coi windows forms, che sono accessibili di default... Ho diviso l'interfaccia grafica dal resto, quindi non sarà un problema usarne un'altra.
Comunque, veniamo al problema:
per l'autocompletamento sto usando rlcompleter, che fa quello che deve fare, nel senso che mi completa parole chiave, membri di moduli, di classi... insoma tutto. Il guaio è che quando sono all'interno di una funzione e assegno una variabile, foss'anche una lista o un dizionario, non ho modo di completare i suoi membri. Mentre scrivo il codice c'è una code.InteractiveConsole che lavora in background, a cui vengono passate le linee del codice che scrivo nell'editor col metodo push. Ora, fin quando siamo a livello di modulo, le istruzioni vengono eseguite in realtime e posso recuperare le variabili assegnate dal namespace che ho assegnato all'istanza di InteractiveConsole; fin qui tutto ok. Però, quando inizio a scrivere una classe, o una funzione, InteractiveConsole non aggiorna il suo namespace fino a quando non ritiene che la funzione o la classe sia terminata; il contenuto viene messo nel buffer e viene eseguito solo alla fine. Ciò vuol dire che in quel momento non posso completare mai le variabili che istanzio all'interno della funzione o della classe. Facciamo un esempio (tenete conto che le indentazioni le faccio di un solo spazio, sennò non ci sto nella riga del display braille che è di quaranta caratteri)
class prova(object):
  def __init__(self):
     self.l = list()
self.l. # e qui mi dovrebbero comparire i membri di list, che però giustamente non compaiono, perché la console non ha finito di eseguire il codice.

Ora, c'è secondo voi un modo di utilizzare l'autocompletamento anche in questo senso? Un debugger? un analizzatore di codice? O forse qualche altra idea che ora non mi viene in mente? O magari istanziare una console temporanea che resta in vita solo mentre sto scrivendo la classe e le faccio credere che tutte le variabili siano a livello del suo namespace... ma devo lavorare di stringhe, togliendo self e indentazioni varie... non so... sono bloccato.
Ciao!

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a