[Python] area di testo in wxPython

Daniele Varrazzo piro a develer.com
Mer 14 Nov 2007 15:09:57 CET


Mr.SpOOn ha scritto:
> Salve,
> sto cercando di fare una piccola applicazione dotata di interfaccia
> grafica utilizzando wxPython.
> 
> Vorrei fare delle prove con l'input del testo. Più precisamente, avrei
> bisogno di una casella di testo nella quale inserire una frase di
> lunghezza arbitraria (quindi non una semplice parola o uno username) e
> di salvarla, dopo la pressione di un apposito bottone, in un oggetto
> stringa.
> 
> Sto leggendo il libro wxPython in action, ma c'è molto più di quanto
> mi serve adesso e non sono riuscito a capire esattamente cosa devo
> utilizzare a questo scopo.
> 
> Va bene l'oggetto wx.TextCtrl?  

Sì, purché tu aggiunge wx.TE_MULTILINE al parametro del costruttore 'style'.

> O serve un TextEntryDialog?

Forse va bene anche questo. Dalla documentazione 
(http://www.wxwidgets.org/manuals/stable/wx_wxtextentrydialog.html) sembra che 
anche questo possa prendere lo stesso stile wx.TE_MULTILINE del TextCtrl. 
Sicuramente è meno flessibile ma forse fa giusto al caso tuo.

> E come faccio a collegare un bottone all'area di testo?

Nell'init della form in cui metti sia il test box che il bottone, devi 
collegare un evento del bottone ad una funzione.

     def __init__(...)
         self.the_text_ctrl = wx.TextCtrl(self, -1, ...)
         self.the_button = wx.Button(self, -1, ...)
         self.Bind(wx.EVT_BUTTON, self.buttonPressed)

In questa funzione puoi leggere il valore del text box come stringa:

     def buttonPressed(self, evt):
         s = self.the_text_ctrl.GetValue()

Tutto non testato!

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


Maggiori informazioni sulla lista Python