Python 3 - Tkinter Text
I widget di testo forniscono funzionalità avanzate che consentono di modificare un testo su più righe e formattare il modo in cui deve essere visualizzato, ad esempio cambiarne il colore e il carattere.
Puoi anche utilizzare strutture eleganti come tabulazioni e segni per individuare sezioni specifiche del testo e applicare modifiche a quelle aree. Inoltre, puoi incorporare finestre e immagini nel testo perché questo widget è stato progettato per gestire sia testo normale che formattato.
Sintassi
Ecco la semplice sintassi per creare questo widget:
w = Text ( master, option, ... )
Parametri
master - Questo rappresenta la finestra principale.
options- Ecco l'elenco delle opzioni più comunemente utilizzate per questo widget. Queste opzioni possono essere utilizzate come coppie chiave-valore separate da virgole.
Sr.No. | Opzione e descrizione |
---|---|
1 | bg Il colore di sfondo predefinito del widget di testo. |
2 | bd La larghezza del bordo attorno al widget di testo. L'impostazione predefinita è 2 pixel. |
3 | cursor Il cursore che apparirà quando il mouse si trova sopra il widget di testo. |
4 | exportselection Normalmente, il testo selezionato all'interno di un widget di testo viene esportato per essere la selezione nel gestore delle finestre. Imposta exportselection = 0 se non vuoi quel comportamento. |
5 | font Il carattere predefinito per il testo inserito nel widget. |
6 | fg Il colore utilizzato per il testo (e le bitmap) all'interno del widget. È possibile modificare il colore per le regioni contrassegnate; questa opzione è solo l'impostazione predefinita. |
7 | height L'altezza del widget in linee (non pixel!), Misurata in base alla dimensione del carattere corrente. |
8 | highlightbackground Il colore dell'evidenziazione dello stato attivo quando il widget di testo non è attivo. |
9 | highlightcolor Il colore dell'evidenziazione dello stato attivo quando il widget di testo ha lo stato attivo. |
10 | highlightthickness Lo spessore dell'evidenziazione del fuoco. L'impostazione predefinita è 1. Impostare lo spessore di evidenziazione = 0 per sopprimere la visualizzazione dell'evidenziazione del fuoco. |
11 | insertbackground Il colore del cursore di inserimento. L'impostazione predefinita è il nero. |
12 | insertborderwidth Dimensioni del bordo 3-D attorno al cursore di inserimento. L'impostazione predefinita è 0. |
13 | insertofftime Il numero di millisecondi in cui il cursore di inserimento è spento durante il suo ciclo di lampeggiamento. Impostare questa opzione su zero per sopprimere il lampeggiamento. L'impostazione predefinita è 300. |
14 | insertontime Il numero di millisecondi in cui si trova il cursore di inserimento durante il suo ciclo di lampeggiamento. L'impostazione predefinita è 600. |
15 | insertwidth Larghezza del cursore di inserimento (la sua altezza è determinata dall'elemento più alto nella sua riga). L'impostazione predefinita è 2 pixel. |
16 | padx La dimensione del riempimento interno aggiunto a sinistra ea destra dell'area di testo. L'impostazione predefinita è un pixel. |
17 | pady La dimensione del riempimento interno aggiunto sopra e sotto l'area di testo. L'impostazione predefinita è un pixel. |
18 | relief L'aspetto 3-D del widget di testo. L'impostazione predefinita è sollievo = SUNKEN. |
19 | selectbackground Il colore di sfondo da utilizzare per visualizzare il testo selezionato. |
20 | selectborderwidth La larghezza del bordo da utilizzare intorno al testo selezionato. |
21 | spacing1 Questa opzione specifica quanto spazio verticale in più viene messo sopra ogni riga di testo. Se una riga va a capo, questo spazio viene aggiunto solo prima della prima riga che occupa sul display. L'impostazione predefinita è 0. |
22 | spacing2 Questa opzione specifica la quantità di spazio verticale aggiuntivo da aggiungere tra le righe di testo visualizzate quando una riga logica va a capo. L'impostazione predefinita è 0. |
23 | spacing3 Questa opzione specifica quanto spazio verticale aggiuntivo viene aggiunto sotto ogni riga di testo. Se una riga va a capo, questo spazio viene aggiunto solo dopo l'ultima riga che occupa sul display. L'impostazione predefinita è 0. |
24 | state Normalmente, i widget di testo rispondono agli eventi della tastiera e del mouse; impostare state = NORMAL per ottenere questo comportamento. Se si imposta state = DISABLED, il widget di testo non risponderà e non sarà nemmeno possibile modificarne il contenuto a livello di programmazione. |
25 | tabs Questa opzione controlla il modo in cui i caratteri di tabulazione posizionano il testo. |
26 | width La larghezza del widget in caratteri (non pixel!), Misurata in base alla dimensione del carattere corrente. |
27 | wrap Questa opzione controlla la visualizzazione di linee troppo larghe. Imposta wrap = WORD e interromperà la riga dopo l'ultima parola che si adatterà. Con il comportamento predefinito, wrap = CHAR, qualsiasi riga che diventa troppo lunga verrà interrotta in qualsiasi carattere. |
28 | xscrollcommand Per rendere il widget di testo scorrevole orizzontalmente, impostare questa opzione sul metodo set () della barra di scorrimento orizzontale. |
29 | yscrollcommand Per rendere il widget di testo scorrevole verticalmente, impostare questa opzione sul metodo set () della barra di scorrimento verticale. |
Metodi
Gli oggetti di testo hanno questi metodi:
Sr.No. | Metodo e descrizione |
---|---|
1 | delete(startindex [,endindex]) Questo metodo elimina un carattere specifico o un intervallo di testo. |
2 | get(startindex [,endindex]) Questo metodo restituisce un carattere specifico o un intervallo di testo. |
3 | index(index) Restituisce il valore assoluto di un indice basato sull'indice specificato. |
4 | insert(index [,string]...) Questo metodo inserisce le stringhe nella posizione di indice specificata. |
5 | see(index) Questo metodo restituisce true se il testo che si trova nella posizione dell'indice è visibile. |
I widget di testo supportano tre distinte strutture di supporto: Marks, Tabs e Indexes:
I segni vengono utilizzati per contrassegnare le posizioni tra due caratteri all'interno di un determinato testo. Abbiamo i seguenti metodi disponibili per la manipolazione dei segni:
Sr.No. | Metodo e descrizione |
---|---|
1 | index(mark) Restituisce la posizione della riga e della colonna di un segno specifico. |
2 | mark_gravity(mark [,gravity]) Restituisce la gravità del segno dato. Se viene fornito il secondo argomento, la gravità viene impostata per il segno dato. |
3 | mark_names() Restituisce tutti i segni dal widget Testo. |
4 | mark_set(mark, index) Indica una nuova posizione al segno dato. |
5 | mark_unset(mark) Rimuove il contrassegno specificato dal widget Testo. |
I tag vengono utilizzati per associare nomi a regioni di testo, il che semplifica il compito di modificare le impostazioni di visualizzazione di aree di testo specifiche. I tag vengono utilizzati anche per associare i callback degli eventi a intervalli di testo specifici.
Di seguito sono riportati i metodi disponibili per la gestione delle schede:
Sr.No. | Metodo e descrizione |
---|---|
1 | tag_add(tagname, startindex[,endindex] ...) Questo metodo contrassegna la posizione definita da startindex o un intervallo delimitato dalle posizioni startindex e endindex. |
2 | tag_config È possibile utilizzare questo metodo per configurare le proprietà del tag, che includono, justify (center, left, or right), tabs (questa proprietà ha la stessa funzionalità della proprietà delle tabs del widget Text) e underline (usato per sottolineare il testo taggato) . |
3 | tag_delete(tagname) Questo metodo viene utilizzato per eliminare e rimuovere un determinato tag. |
4 | tag_remove(tagname [,startindex[.endindex]] ...) Dopo aver applicato questo metodo, il tag dato viene rimosso dall'area fornita senza eliminare l'effettiva definizione del tag. |
Esempio
Prova tu stesso il seguente esempio:
# !/usr/bin/python3
from tkinter import *
root = Tk()
text = Text(root)
text.insert(INSERT, "Hello.....")
text.insert(END, "Bye Bye.....")
text.pack()
text.tag_add("here", "1.0", "1.4")
text.tag_add("start", "1.8", "1.13")
text.tag_config("here", background = "yellow", foreground = "blue")
text.tag_config("start", background = "black", foreground = "green")
root.mainloop()
Risultato
Quando il codice sopra viene eseguito, produce il seguente risultato: