Le TextView possono contenere una certa quantità di testo, vediamo brevemente come poter scrivere al loro interno un certo testo.
Per questo esempietto disegneremo un’interfaccia composta unicamente da un controllo TextView di nome txvTesto e un pulsante di nome btnScrivi, separati da loro da una casella verticale necessaria al packing. Al segnale clicked del pulsante sarà assegnata la funzione predefinita on_btnScrivi_clicked.
Il progetto, molto sintetico presenta subito la funzionalità della funzione on_btnScrivi_clicked:
import gtk
import gtk.glade
import pygtk
pygtk.require("2.0")
gladeFile = gtk.glade.XML('textview-1.glade')
window1 = gladeFile.get_widget('window1')
txvTesto = gladeFile.get_widget('txvTesto')
def on_btnScrivi_clicked(widget, data=None):
buffer = txvTesto.get_buffer()
buffer.set_text('Scriviamo qualcosa all\'interno della TextView')
Il metodo get_buffer recupera il TextBuffer del controllo txvTesto, l’oggetto che si occuperà della memorizzazione dei dati nella TextView. Ottenuto il buffer, basterà richiamare il metodo set_text di quest’ultimo per assegnare una stringa di testo all’interno del buffer, eliminando totalmente il precedente contenuto.
In questo esempio all’interno del buffer della TextView verrà inserito “Scriviamo qualcosa all’interno della TextView“.
Il resto del codice è la normale gestione dei segnali e l’avvio del programma Gtk:
def on_window1_destroy(widget, data=None):
gtk.main_quit()
segnali = {
'on_window1_destroy': on_window1_destroy,
'on_btnScrivi_clicked': on_btnScrivi_clicked
}
gladeFile.signal_autoconnect(segnali)
if window1:
window1.show()
gtk.main()
E’ possibile scaricare sia il progetto Glade che il sorgente Python.
Puoi dirmi come posso fare a localizzare un programma?Per esempio ho provato a vedere gespeaker (tuo programma) ma non riesco a localizzarlo correttamente. Per esempio (anche su gespeaker) se modifico la traduzione di en_US non si vedono le modifiche sul programma (io uso en_US come lingua del sistema).
ciao mika
la traduzione basata su gettext utilizza un file .pot iniziale con tutti i testi da tradurre (non tradotti)
dal file pot vengono generati i file .po da tradurre con:
msginit --input=file.pot --output-file=en_US.po --locale=en_US
questo comando generera` da file.pot il file en_US.po
questo file .po andra` tradotto riga per riga, e` molto semplice, ovviamente soltanto le righe msgstr e non quelle msgid
finita la traduzione del .po devi compilare il file in .mo con
msgfmt --output-file=en_US.mo en_US.po
dovrai poi dire all’applicazione dove si trova il file .mo attraverso l’indicazione del domain.
i miei progetti sono tutti localizzati.
Grazie per le tue lezioni. Ti ho citato nel forum:
http://forum.ubuntu-it.org/index.php/topic,334271.msg2563076.html#msg2563076
Marco
Salve, complimenti con le guide. Volevo farti una domanda. Se volessi creare un editor tipo gEdit, quindi colorazione della sintassi e cose varie, cosa mi consigli?
per un editor di testo conviene usare i componenti scintilla o gtksourceview che forniscono gia` il sistema di evidenziare il codice.