Text

fr = Text(parent, opcao=valor, ...)

O componente Text permite mostrar texto formatado, em múltiplas linhas, com imagens. Pode também ser usado como editor de texto.

Atributos

OpçãoDescrição
autoseparatorsCaso a opção undo esteja definida, esta opção controla se os separadores são adicionado à pilha de desfazer, após cada inserção ou eliminação (autoseparators=True) ou não, (autoseparators=False).
bd ou borderwidthEspessura da borda à volta do componente.
bg ou backgroundCor de fundo do componente.
cursorCursor mostrado quando o rato está sobre o componente.
exportselectionPor defeito, o texto selecionado é exportado como seleção do gestoir de janelas. Definir exportselection=False caso não se pretenda este comportamento.
fontFonte da caixa do texto inserido no componente. Para usar várias fontes, pode-se usar tags para partes do texto.
fg or foregroundCor do texto do componente. Para usar várias cores, pode-se usar tags para partes do texto.
heightAltura do componente em numero de linhas, de acordo com a fonte
highlightbackgroundCor do foco quando a text nao tem o foco.
highlightcolorCor do foco quando a text tem o foco.
highlightthicknessEspessura do foco. Valor de defeito 1. Definir como 0 para suprimir a espessura do foco.
insertbackgroundSeleciona a cor do cursor de inserção na caixa de texto. Valor de defeito é preto.
insertborderwidthEspessura da borda 3D à volta do cursor de inserção. Valor de defeito é 0.
insertofftimeinsertontimeControla o tempo de piscagem do cursor de inserção, em milisegundos.
insertwidthEspessura do cursor de inserção. Valor de defeito é 2.
maxundoNúmero máximo de operações retidas na pilha de undo. Se valor igual -1 o número de operações será ilimitado.
padxEspaçamento interno à esquerda e à direita.
padyEspaçamento interno no topo e no fundo.
reliefTipo de relevo do text. Valor de defeito: tk.SUNKEN.
selectbackgroundselectforegroundselectborderwidthCor de fundo, cor de primeiro plano e espessura da borda do texto selecionado.
spacing1Define a quantidade de espaço extra acima das linhas. Valor de defeito é 0.
spacing2Define a quantidade de espaço extra acima das linhas quando uma linha quebra. Valor de defeito é 0.
spacing3Define a quantidade de espaço extra abaixo das linhas. Valor de defeito é 0.
stateValores: tk.NORMAL (valor de defeito); tk.DISABLED: o componente deixa de responder n ao permitindo mnodificar o seu conteúdo, nem sequer programáticamente.
tabsValor do posicionamento da tecla tab.
takefocusSe takefocus=0 o componente não receberá o foco.
undoSe True habilita o mecanismo de undo; se False não o permite.
widthLargura do componente em número de carateres, de acordo com a fonte.
wrapControla a visualização das linhas que são demasiadamente grandes:wrap=tk.CHAR a linha quebra em qualquer caratere. É o valor de defeito.wrap=tk.WORD a linha quebra após a última palavra que ainda cabe.wrap=tk.NONE a linha não quebra.
xscrollcommandFaz o texto rolável horizontalmente. Definir esta opção no método .set da scrollbar horizontal.
yscrollcommandFaz o texto rolável verticalmente. Definir esta opção no método .set da scrollbar vertical.

Métodos

.bbox(index) : Retorna um tuplo com a caixa delimitadora do caratere com a posição index ou None se o caratere não fôr visível.. O tuplo tem o formato (x, y, w, h) em que xy são as coordenadas do canto superior esquerdo, w é a largura e h é a altura.

index: Posição do caratere.

.compare(index1, op, index2) : Compara as posição index1 e index2 usando a operação de comparação op. A operação op pode ser uma das seguintes: ‘<‘, ‘<=’, ‘==’, ‘!=’, ‘>=’, ou ‘>’.

index1: Primeira posição.

op: Operador.

index2: Segunda posição.

.delete(start, end=None) : Apaga o caratere na posição start (se end fôr omitido) ou todo o texto entre start e end.

start: Posição de início.

end: Opcional. posição de fim.

.dlineinfo(index) : Retorna a caixa delimitadora da linha que contém o caratere na posição index. A caixa delimitadora é retornada na forma de um tuplo com o formato (x, y, w, h, o), ou None se a linha não fôr visível, em que xy são as coordenadas do canto superior esquerdo, w é a largura, h é a altura e o é o deslocamento do topo da linha para a baseline.

index: Posição do caratere.

.edit_modified(arg=None) : consulta, define ou limpa a flag de modificação de edição. Esta flag é usada para controlar se o conteúdo do componente Text foi modificado desde a última salvaguarda em ficheiro.

arg: Opcional. Se omitido, serve para questionar se houve modificação do conteúdo. Neste caso retorna True se hoiuve ou False se não houve. Se este argumento fôr igual a True põe a flag a True; se fôr igual a False limpa a flag de modificação

.edit_redo() : Executa uma operação de Redo (Refazer).

.edit_reset() : Limpa a pilha de undo.

.edit_separator() : Coloca um separador na pilha de undo. Numa futura operação undo só as alterações desde o último separador posto na pilha, serão puxados.

.edit_undo() : Reverte todas as alterações feitas no conteúdo do componente Text desde o último separador ou desde o início da pilha se não tiver separadores.

.get(start, end=None) : Retorna todo o texto entre as posições start e end ou o caratere na posição start se end fôr omitido.

start: Posição de início.

end: Opcional. Posição de fim.

.image_cget(index, option) : Retorna o valor da opção option de uma imagem embebida na posição index.

index: Posição da imagem.

option: Opção da imagem.

.image_configure(index, **options) : Modifica uma ou mais opções de uma imagem embebida na posição index. Cada opção é fornecida no formato opcao=valor. Se não definir nenhuma opção, recebe um dicionário com todas as opções da imagem e respectivos valores.

index: Posição da imagem.

**options: Opções da imagem.

.image_create(index, **options) : Insere uma imagem na posição index. Deve ser uma imagem do tipo PhotoImage ou BitmapImage. As opções poder passadas numa série de pares opcao=valor ou usando um dicionário com as opções pretendidas. As opções são uma ou mais das seguintes:

  • align: alinhamento vertical. Pode ser topcenterbottom ou baseline.
  • image: a imagem (instância de PhotoImage ou BitmapImage).
  • name: nome da instância da imagem. Se omitido o Tkinter gerará um nome.
  • padx, pady: nr de pixeis extra a serem adicionados à esquerda e à direita e/ou em cima e em baixo.

index: Posição da imagem.

**options: Opções da imagem.

.image_names() : Retorna um tuplo com todos os nomes de todas as imagens embebidas no componente Text.

.index(index) : Para a posição index, retorna uma string com a posição no formato “linha.coluna”.

index: Especificação da posição.

.insert(index, text, *tags) : Insere o texto text na posição index. O argumento *tags deve ser fornecido na forma de um tuplo com as tags pretendidas. Se omitir *tags, o texto inserido será marcado com as tags que se aplicam aos pontos antes e depois do ponto de inserção.

index: Posição de inserção do texto.

text: Texto a inserir.

*tags: Opcional. Tags a anexar ao texto.

.mark_gravity(mark, gravity=None) : Define o alinhamento horizontal para uma marca. Se o argumento gravity fôr omitido, retorna o alinhamento horizontal para a marca especificada.

mark: nome da marca.

gravity: Opcional. Alinhamento horizontal. Pode ser tk.LEFT ou tk.RIGHT

.mark_names() : Retorna um tuplo com os nomes de todas as marcas definidas na janela.

.mark_next(index) : Retorna uma string com o nome da marca a seguir à posição index. Se não houver nenhuma marca após index, retorna uma string vazia. Se index fôr uma marca retorna a marca a seguir.

index: Posição ou nome de marca.

.mark_previous(index) : Retorna uma string com o nome da marca que precede a posição index. Se não houver nenhuma marca antes de index, retorna uma string vazia. Se index fôr uma marca retorna a marca antes dessa.

index: Posição ou nome de marca.

.mark_set(mark, index) : Move a marca mark para a posição index. Se a marca não existir, cria-a nessa posição com o alinhamento tk.RIGHT.

mark: Nome da marca.

index: Posição.

.mark_unset(mark) : Remove a marca mark do componente.

mark: Nome da marca.

.scan_dragto(x, y) : Rola o conteúdo do componente relativamente à âncora de scanning. O texto é movido 10 vezes a distância entre a âncora e a posição dada.

x: Coordenada horizontal.

y: Coordenada vertical.

.scan_mark(x, y) : Especifica a âncora de scanning. Estabelece uma âncora que permite um rolamento rápido para as coordenadas do rato.

x: Coordenada horizontal.

y: Coordenada vertical.

.search(pattern, index, option, …) : Faz uma pesquisa por pattern (pattern pode ser uma string ou expressão regular) no texto, a começar na posição index, e retorna uma string com a posição na forma “linha.caratere”, se a pesquisa fôr bem sucedida; se não fôr retorna uma string vazia.

pattern: String ou expressão regular.

index: Posição de início da busca.

option..: Opções com critérios de pesquisa.As opções podem ser as seguintes:

  • backwards: se igual a True, faz uma pesquisa para trás, a partir da posição index.
  • count: obtém o tamanho do texto encontrado, se definirmos nesta opção uma variável IntVar na qual podemos obter esse tamanho.
  • exact: faz uma comparação exata com pattern.
  • forwards: se igual a True, faz uma pesquisa para a frente, a partir da posição index.
  • regexp: se igual a True, interpreta pattern como uma expressão reegular .
  • nocase: se igual a 1, não faz distinção entre maiúscula e minúsculas. Por defeito, faz essa distinção.
  • stopindex: posição a partir da qual a busca pára.

.see(index) : Se o texto na posição index não fôr visível, rola o texto até ser visível.

index: Especificação da posição.

.tag_add(tag_name, index1, index2=None) : Associa a tag tag_name com uma região do texto a começar após a posição index1 e a terminar na posição index2. Se index2 fôr omitido, associa a tag ao caratere na posição index1.

tagname: Nome da tag.

index1: Especificação da posição de início.

index2: Especificação da posição de fim.

.tag_bind(tag_name, event=None, callback, add=None) : Liga um evento ao texto associado à tag tagname. Para criar uma nova ligação ao texto etiquetado, especificar o evento no argumento ebent e a função chamada quando o evento acontece no argumento callback. Para adicionar uma nova ligação a a uma tag existente, definir “+” no argumento add.

tag_name: Nome da tag.

event: Evento.

callback: Função de callback associada ao evento evento.

add: Se igual a ‘+’ adiciona esta ligação de evento às existentes, caso contrário substitui a ligação para o evento evento.

.tag_cget(tag_name, option) : Retorna o valor da opção option da tag tag_name.

tag_name: Nome da tag.

option: Nome da opção.

.tag_config(tag_name, option,..) : Altera os valores das opções option,.. passando os valores em pares opção=valor. Se passar sómente o argumento tag_name retorna um dicionário com todas as opções definidas e respectivos valores.

tag_name: Nome da tag.

option,..: Pares opção=valor.

As opções são as seguintes:

  • background: cor de fundo para o texto desta tag.
  • bgstipple: faz a cor de fundo aparecer acinzentada.
  • borderwidth: espessura da borda do texto desta tag. Valor de defeito é 0.
  • fgstipple:
  • font: fonte do texto desta tag.
  • foreground: cor do texto dests tag.
  • justify: justificação tk.LEFT (valor de defeito), tk.CENTER, ou tk.RIGHT.
  • lmargin1: indentação da primeira linha de texto desta tag.
  • lmargin2: indentação das linhas de texto subsequentes desta tag.
  • offset: por quanto elevar (valores positivos) ou baixar (valores negativos) o texto desta tag em relação à baseline.
  • overstrike: igual a 1 desenha uma linha horizontal a meio do texto.
  • relief: efeito 3D do texto desta tag. Valor de defeito é th.FLAT.
  • rmargin: tamanho da margem direita.
  • spacing1: quanto espaço extra vertical acima de cada linha de texto desta tag.
  • spacing2: quanto espaço extra vertical entre as linhas de texto desta tag.
  • spacing3: quanto espaço extra vertical abaixo de cada linha de texto desta tag.
  • tabs: tabulamentos das linhas de texto desta tag.
  • underline: igual a 1 , sublinha o texto.
  • wrap: como as linhas extensas são quebradas.

.tag_delete(tag_name, …) : Elimina a(s) tag(s) com os nomes passados nos argumentos.

tag_name,…: Nomes da tags.

.tag_lower(tag_name, belowThisTag_Name) : Move a tag especificada por tag_name, na pilha de tags, para debaixo da tag especificada por belowThisTag_Name. Se passar sómente o argumento tag_name para a tag para o fundo da pilha.

tag_name: Nome da tag a mover.

belowThisTag_Name: Tag para debaixo da qual a tag será movida.

.tag_names(index=None) : Retorna uma sequência com os nomes de todas as tags associadas com a posição index. Se omitir index, retorna os nomes de todas as tags no componente.

index: Posição.

.tag_nextrange(tag_name, index1, index2=None) : Este método pesquisa uma região do texto à procura de posições onde tag tag_name inicie. A pesquisa começa na posição index1 e termina na posição index2. Se index2 fôr omitido, a busca vai de index1 até ao final do texto. Se uma região fôr encontrada retorna uma sequência [i0, i1] onde i0 é o primeiro caratere da tag e i1 o último. Se nemhuma região fôr encontrada retorna uma string vazia.

tag_name: Nome da tag.

index1: Posição de inicio.

index2: Posição de fim.

.tag_prevrange(tag_name, index1, index2=None) : Este método pesquisa uma região do texto à procura de posições onde tag tag_name inicie. A pesquisa começa antes da posição index1 e termina na posição index2. Se index2 fôr omitido, a busca vai de index1 até ao final do texto. Se uma região fôr encontrada retorna uma sequência [i0, i1] onde i0 é o primeiro caratere da tag e i1 o último. Se nemhuma região fôr encontrada retorna uma string vazia.

tag_name: Nome da tag.

index1: Posição de inicio.

index2: Posição de fim.

.tag_raise(tag_name, aboveThisTag_Name) : Move a tag especificada por tag_name, na pilha de tags, para cima da tag especificada por aboveThisTag_Name. Se passar sómente o argumento tag_name para a tag para o topo da pilha.

tag_name: Nome da tag a mover.

aboveThisTag_Name: Tag para cima da qual a tag será movida.

.tag_ranges(tag_name) : Retorna todos os intervalos de texto associados com a trag tag_name, na forma de uma sequência [i0, f0, i1, f1,…] em que i0 é a posição antes do primeiro caratere do intervalo e f0 é a posição depois do último caratere do intervalo.

tag_name: Nome da tag a mover.

aboveThisTag_Name: Tag para cima da qual a tag será movida.

.tag_remove(tag_name, index1, index2=None) : Remove a tag tag_name de todos os carateres entre as posição index1 e index2. Se index2 fôr omitido remove a tag do caratere na posição index1.

tag_name: Nome da tag a remover.

index1: Posição de inicio.

index2: Posição de fim.

.tag_unbind(tag_name, event, callback) : Remove a ligação de evento, se existir, para o evento event aplicada à tag tag_name .

tag_name: Nome da tag.

item: Evento.

event: Função de callback que trata o evento event.

.window_cget(index, option) : Retorna o valor da opção option do componente na posição index.

index: Posição do componente.

option: Nome da opção.

.window_configure(index, options) : Altera os valores das opções para o componente na posição index. Para alterar os valores deve passar uma ou mais opções no formato opcao=valor. Se passar sómente o argumento index, retorna um dicionário com todas as opções e respectivos valores para o componente na posição index.

index: Posição do componente.

options: Pares opcao=valor.

.window_create(index, options) : Insere um componente na posição index. Existem duas maneiras de inserir o componente:

  1. Pode-se passar o componente para a opção window.
  2. Pode-se definir uma função de callback que criará o componente e passar a função na opção create.

index: Posição do componente.

options: Pares opcao=valor.
As opções são as seguintes:

  • align: como posicionar o componente verticalmente na linha se não fôr tão alto como o texto da mesma. Valores podem ser: align=tk.CENTER (valor de defeito), align=tk.TOPalign=tk.BOTTOMalign=tk.TOPalign=tk.BASELINE
  • create: pode receber uma função de callback que cria o componente. Retorna o componente criado.
  • padx: espaço extra nos lados esquerdo e direito do componente. Valor de defeito é 0.
  • pady: espaço extra nos lados acima e abaixo do componente. Valor de defeito é 0.
  • stretch: controla o que acontece ao componente quando a altura da linha é maior que o componente. Porr defeito o valor é 0 o que significa que o componente é deixado no seu tamanho natural; se fôr igual a 1 o componente é esticado verticalmente de forma a preencher a altura da linha.
  • window: o componente a inserir. Deve ser filho do componente Text.

.window_names() : Retorna um tuplo com os nomes de todos os componentes embebidos no componente Text.

.xview(tk.MOVETO, fraction) : Este método rola o texto horizontalmente e pode ser ligado à opção command de uma barra de rolagem (scrollbar) horizontal . Podemos passar um valor entre 0.0 e 1.0 para o argumento fraction sendo que 0.0 corresponde ao lado mais à esquerda e 1.0 ao lado mais à direita.

fraction: valor do deslocamento horizontal.

.xview(tk.SCROLL, n, what) : Este método move o texto para a direita ou para a esquerda. O argumento what define por quanto o texto é movido e pode ser tk.UNITS ou tk.PAGES. O argumento n define por quantos carateres ou páginas mover o texto; se fôr um valor positivo move para a direita; se fôr negativo move para a esquerda.

n: quantidade de carateres ou páginas a mover.

whattk.UNITS ou tk.PAGES.

.xview_moveto(fraction) : O mesmo que .xview(tk.MOVETO, fraction).

.xview_scroll(n, what) : O mesmo que .xview(tk.SCROLL, n, what).

.yview(tk.MOVETO, fraction) : Este método é equivalente a .xview(tk.MOVETO, fraction) só que em termos verticais.

.yview(tk.SCROLL, n, what) : Este método é equivalente a .xview(tk.SCROLL, n, what) só que em termos verticais.

.yview_moveto(fraction) : Este método é equivalente a .xview_moveto(fraction) só que em termos verticais.

.yview_scroll(n, what) : Este método é equivalente a .xview_scroll(n, what) só que em termos verticais.

Exemplo 1:

Inserção de texto com definição de tags:

from tkinter import *

window = Tk()
window.title("Tkinter - Text")
window.geometry("300x200")

#criação de um componente Text:
text = Text()

text.config(font=('courier', 15, 'normal'))

#confuração do componente:
text.config(width=20, height=12)

text.pack(expand=YES, fill=BOTH)

#inserção de texto:
text.insert(END, 'Linha1\n\nLinha2\n\nLinha 3.\n\n')

text.tag_add("tag1", "1.0", "1.4")
text.tag_add("tag2", "3.1", "3.5")
text.tag_config("tag1", background="yellow", foreground="blue")
text.tag_config("tag2", background="#00CED1", foreground="green")

window.mainloop()

Saída:

Exemplo 2:

Text com scrollbar vertical:



from tkinter import *

window = Tk()
window.title("Tkinter - Text")
window.geometry("300x200")

#criação de um componente Text:
text = Text()

#confuração do componente:
text.config(font=('courier', 15, 'normal'))
text.config(width=20, height=12)

text.pack(expand=YES, fill=BOTH)

#inserção de texto:
text.insert(END, 'Linha1\n\nLinha2\n\nLinha 3.\n\nLinha4\n\nLinha5\n\nLinha 6.\n\n')

#Definição de 2 tags em duas regiões do texto:

#linha 1, caratere 0 a linha 1, caratere 4:
text.tag_add("tag1", "1.0", "1.4")
#linha 3, caratere 1 a linha 3, caratere 5:
text.tag_add("tag2", "3.1", "3.5")

#configuração das 2 tags:
text.tag_config("tag1", background="yellow", foreground="blue")
text.tag_config("tag2", background="#00CED1", foreground="green")

#Scrollbar vertical :
scrollbar=Scrollbar(text)
scrollbar.pack(side=RIGHT,fill=Y)
text.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=text.yview)

window.mainloop()

Saída:

Exemplo 3:

Texto e imagem

from tkinter import *

window = Tk()
window.title("Tkinter - Text")
window.geometry("300x230")

#criação de um componente Text:
text = Text(window)

#carregamento da imagem:
photo=PhotoImage(file='dog1.png')
text.insert(END,'\n')
#inserção da imagem no componente:
text.image_create(END, image=photo)


#inserção de texto:
text.insert(END, '\n\n\nWe all have some kind or dog in us\n\n')
text.insert(END, '\nLet\'s try and find yours.\n\n')

text.pack()

window.mainloop()

Saída: