Canvas

bt = Canvas(parent, opcao=valor, ...)

O componente Canvas permite desenhar gráficos, assim como colocar nele componentes, frames ou texto.

Atributos

OpçãoDescrição
bd ou borderwidthEspessura da borda à volta do componente. Valor de defeito é 2 pixeis.
bg ou backgroundCor de fundo do componente. Cor de defeito é cinzento claro (‘#E4E4E4’).
closeenoughUm valor de float que especifica quão próximo o rato deve estar perto de um item para ser considerado dentro dele. Valor de defeito 1.0.
confineSe True (valor de defeito) o canvas não pode ser rolado para fora da região scrollregion.
cursorNome do cursor a ser mostrado quando o rato está sobre o componente.
heightAltura do componente.
highlightbackgroundCor do foco quando o componente nao tem o foco.
highlightcolorCor do foco quando o componente tem o foco.
highlightthicknessEspessura do foco. Valor de defeito 1.
reliefTipo de relevo do componente Canvas. Valor de defeito: tk.FLAT.
scrollregionUm tuplo (w, n, e, s) que define a área de rolagem do Canvas. w é o lado esquerdo, n o topo, e o lado direito e s o fundo.
selectbackgroundselectforegroundselectborderwidthCor de fundo, cor de primeiro plano e espessura da borda dos items selecionados.
takefocusPor defeito, este componente só obterá o foco quando se clica na tecla tab se houver ligações (bindings) ao teclado. Se igual a 1, o componente obterá o foco, na sua vez, quando se clicar na tecla tab. Se igual a ” terá o comportamento de defeito.
widthLargura do componente.
xscrollincrementNormalmente este componente, com xscrollincrement a zero, pode ser rolado horizontalmente para qualquer posição. Se esta opção tiver um valor positivo, o componente será rolado horizontalmente por múltiplos desse valor.
xscrollcommandSe o componente Canvas fôr rolável definir esta opção no método .set() da scrollbar horizontal.
yscrollincrementComo xscrollincrement mas para rolamentos verticais.
xscrollcommandSe o componente Canvas fôr rolável definir esta opção no método .set() da scrollbar vertical.

Métodos

.addtag(tag, method, **args) : Adiciona uma etiqueta (tag) a um determinado número de items.

tag: Etiqueta a adicionar.

method: Como adicionar a etiqueta. Pode ser aboveallbelowclosestenclosedoverlapping ou withtag

**args: Argumentos adicionais.

.addtag_above(tag, item) : Adiciona uma etiqueta (tag) imediatamente acima do item.

tag: Etiqueta a adicionar.

item: item ou o id do mesmo.

.addtag_all(item) : Adiciona uma etiqueta (tag) a todos os items .

tag: etiqueta a adicionar.

.addtag_below(tag, item) : Adiciona uma etiqueta (tag) imediatamente abaixo do item.

tag: Etiqueta a adicionar.

item: item ou o id do mesmo.

.addtag_closest(tag, x, y, halo=None, start=None) : Adiciona uma etiqueta (tag) o mais próximo posível do ponto de coordenadas x, y.

tag: Etiqueta a adicionar.

xy: coordenadas.

halo: Opcional. Aumenta o tamanho do ponto, Para um valor de 3, por exemplo, qualquer item dentro dos 3 pixeis está em sobreposição.

start: Opcional. É um id de um objeto.

.addtag_enclosed(tag, x1, y1, x2, y2) : Adiciona uma etiqueta (tag) a todos os items dentro do rectângulo x1, y1, x2, y2.

tag: Etiqueta a adicionar.

x1y1: coordenadas do canto superior esquerdo.

x2y2: coordenadas do canto inferior direito.

.addtag_overlapped(tag, x1, y1, x2, y2) : Adiciona uma etiqueta (tag) a todos os items que se sobrepõem ao rectângulo x1, y1, x2, y2. Inclui os que estão dentro do rectângulo.

tag: Etiqueta a adicionar.

x1y1: coordenadas do canto superior esquerdo.

x2y2: coordenadas do canto inferior direito.

.addtag_withtag(tag, tag_id) : Adiciona uma etiqueta (tag) a todos items com uma dada tag ou a um único com um id.

tag: Etiqueta a adicionar.

tag_id: tag de vários items ou id de um único.

.bbox(tag_id=None) : Retorna a caixa delimitadora de todos os items com uma dada tag ou um único item com o id dado.

item: Opcional. Se omitido retorna a caixa delimitadora de todos os items do canvas.Retorna a caixa delimitadora num de 4 elementos com as coordenadas do mesmo.

.canvasx(x, gridspacing=None) : Transforma a ccordenada de ecran x numa coordenada do canvas.

x: Coordenada do ecran.

gridspacing: Opcional. Se fornecida a coordenada do canvas é arredondada para o múltiplo mais próximo desse valor.

.canvasy(y, gridspacing=None) : Transforma a ccordenada de ecran y numa coordenada do canvas.

x: Coordenada do ecran.

gridspacing: Opcional. Se fornecida a coordenada do canvas é arredondada para o múltiplo mais próximo desse valor.

.coords(item, *coords) : Retorna as coordenadas de um ou mais items.

item: Tag ou id do item.

*coords: Lista opcional de pares de coordenadas. Se fornecidas estas coordenadas substituem as coordenadas actuais dos items.

.dchars(item, from, to=None) : Elimina texto de um item editável.

tag_id: Tag ou id do item.

from: Posição de início do texto a eliminar.

to: Posição de fim do texto a remover (inclusive). Se omitido, remove o caratere na posição from

.delete(tag_id) : Remove os items especificados.

tag_id: Tag ou id do item.

.dtag(tag_id, tag=None) : Remove a tag especificada, de todos os items selecionados por tag_id. Se tag fôr omitida remove todas as tags de todos items selecionados.

tag_id: Tag ou id do(s) item(s).

tag: Tag a remover.

.find_above(tag_id) : Remove o item imediatamente acima do item com a tag_id.

tag_id: Tag ou id do item.

.find_all(tag_id) : Retorna um tuple com as identidades de todos os items do canvas.

tag_id: Tag ou id do item.

.find_below(tag_id) : Remove o item imediatamente abaixo do item com a tag_id.

tag_id: Tag ou id do item.

.find_closest(x, y, halo=None, start=None) : Retorna um tuplo com o id do item mais próximo das coordenadas xy. Caso não exista nehum item retorna um tuplo vazio.

xy: coordenadas do canvas.

halo: Opcional. Aumenta o tamanho do ponto, Para um valor de 3, por exemplo, qualquer item dentro dos 3 pixeis está em sobreposição.

start: Opcional. É um id de um objeto.

.find_enclosed(x1, y1, x2, y2) : Retorna um tuple com todos os items incluidos no rectângulo x1, y1, x2, y2.

x1y1: coordenadas do canto superior esquerdo.

x2y2: coordenadas do canto inferior direito.

.find_overlapping(x1, y1, x2, y2) : Retorna um tuple com todos os items que se sobrepõem ao rectângulo x1, y1, x2, y2 ou que estão incluidos nele.

x1y1: coordenadas do canto superior esquerdo.

x2y2: coordenadas do canto inferior direito.

.find_withtag(tag_id) : Retorna uma lista com todos os items com a tag_id especificada.

tag_id: Tag ou id do item.

.focus(tag_id=None) : Move o foco para o item especificado por tag_id. Se houver vários items espeficicados por tag_id move o foco para o 1º que permitir cursor de inserção. Se não houver nenhum item com a tag_id especificada, não move o foco. Para retirar o foco de qualquer item, colocar uma string vazia em tag_id. Para obter o item que tem o foco actualmente, chamar este método sem argumentos.

tag_id: Tag ou id do item.

.gettags(tag_id) : Retorna um tuplo com as atags associadas ao item.

tag_id: Tag ou id do item.

.icursor(tag_id, index) : Move o cursor de inserção, no item referenciado por tag_id para a posição index. Este método só pode ser chamado para items editáveis.

tag_id: Tag ou id do item.

index: Posição do cursor.

.index(tag_id, index) : Obtém o índice do cursor para a posição referida por index. O índice 0 corresponde à posição antes do 1º caratere.

tag_id: Tag ou id do item.

index: Pode ser um valor numérico ou:

  • tk.INSERT : retorna a posição corrente do cursor de inserção.
  • tk.END : retorna a posição após o último caratere.
  • tk.SEL_FIRST : retorna a posição do início da corrente seleção de texto.
  • tk.SEL_LAST : retorna a posição após o fim da corrente seleção de texto.

.insert(tag_id, index, text) : Insere texto num item editável.

tag_id: Tag ou id do item.

index: Posição onde inserir o texto. Posição um valor numérico ou uma constante simbólica:

  • tk.INSERT : retorna a posição corrente do cursor de inserção.
  • tk.END : retorna a posição após o último caratere.
  • tk.SEL_FIRST : retorna a posição do início da corrente seleção de texto.
  • tk.SEL_LAST : retorna a posição após o fim da corrente seleção de texto.

text: Texto a inserir.

.itemcget(tag_id, option) : Retorna o valor da opção de configuração option para o(s) item(s) referenciado(s) por tag_id. Se fôr mais que um, retorna o valor do 1º item.

tag_id: Tag ou id do item.

option: Opção do item.

.itemconfig(tag_id, **options) : Altera uma ou mais opções para o(s) item(s) correspondente(s).

tag_id: Tag ou id do item.

option: Opção do item.

.itemconfigure(tag_id, **options) : Altera uma ou mais opções para o(s) item(s) correspondente(s).

tag_id: Tag ou id do item.

option: Opção do item.

.move(tag_id, dx, dy) : Move o(s) item(s) correspondente(s) de um dado deslocamento.

tag_id: Tag ou id do item.

dxdy: Deslocamento horizontal e vertical.

.postscript(**options) : Gera uma renderização em Postscript do conteúdo do canvas. Imagens e componentes embebidos no canvas não são incluídos.

**options: Opções de Postscript.

.scale(self, xscale, yscale, xoffset, yoffset) : Redimensiona os items correspondentes pelo factor de escala xscaleyscale. As coordenadas dos items são recalculadas como ((coord-offset)*scale+offset)

xscale: Escala horizontal.

yscale: Escala vertical.

xoffset: Deslocamento horizontal em coordenadas do canvas.

yoffset: Deslocamento vertical em coordenadas do canvas.

.scan_dragto(x, y) : Rola o conteúdo do canvas relativamente à âncora de scanning. O conteúdo é 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.

.select_adjust(obj_id,index) : Ajusta a seleção de forma a incluir a posição dada por index, no item de texto com o id obj_id. Também define a âncora de seleção para esta posição.

obj_id: id do item.

index: âncora de seleção.

.select_clear() : Remove qualquer seleção que exista no canvas.

.select_from(obj_id,index) : Define o ponto da âncora de posição para o valor index no texto do item definido por obj_id.

obj_id: id do item.

index: âncora de seleção.

.select_item() : Retorna o id do item que contém a seleção de texto corrente no canvas.

.select_to(obj_id,index) : Modifica a seleção de texto de forma a incluir a região entre o ponto definido pela âncora de seleção e a posição definida por index.

obj_id: id do item.

index: ponto do final da seleção.

.tag_bind(tag_id, event=None, callback, add=None) : Adiciona uma ligação de evento ao(s) item(s) correspondente(s).

tag_id: Tag ou id do item.

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_lower(tag_id, belowThisTag_Id) : Move o(s) item(s) especificados por tag_id, na pilha de visualização do canvas, para debaixo do primeiro ou único item especificado por belowThisTag_Id. Se houver vários items especificados por tag_id, a sua ordem relativa é preservada.

tag_id: Tag ou id do item.

belowThisTag_Id: Item ou items para debaixo do qual os items serão movidos.

.tag_raise(tag_id, aboveThisTag_Id) : Move o(s) item(s) especificados por tag_id, na pilha de visualização do canvas, para cima do primeiro ou único item especificado por aboveThisTag_Id. Se houver vários items especificados por tag_id, a sua ordem relativa é preservada.

tag_id: Tag ou id do item.

belowThisTag_Id: Item ou items para cima do qual os items serão movidos.

.tag_unbind(tag_id, event, callback) : Remove a ligação de evento, se existir, para o evento event aplicados a todos os items especificados po tag_id .

tag_id: Tag ou id do item.

item: Evento.

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

.type(tag_id) : Retorna uma string com o tipo do primeiro ou do único item especificado por tag_id. Pode ser ‘arc’, ‘bitmap’, ‘image’, ‘line’, ‘oval’, ‘polygon’, ‘rectangle’, ‘text’, ou ‘window’.

tag_id: Tag ou id do item.

.xview(how, *args) : Ajusta a vista do canvas horizontalmente.

how: Como ajustar a vista do canvas. Pode ser tk.MOVETO ou tk.SCROLL

*args: No caso de tk.MOVETO, é uma fração (0.0 para a posição mais à esquerda e 1.0 para a posição mais à direita); no caso de tk.SCROLL, é uma unidade e um contador. A unidade pode ser tk.UNITS ou tk.PAGES e o contador especifica quantas unidades mover para a direita ou para a esquerda (se negativo)

.xview_moveto(fracao) : Rola o canvas horizontalmente pelo valor fracao.Este valor está no lado esquerdo do canvas.

fracao: Valor do deslocamento. 0.0 está no início da região de rolamento, 1.0 está no fim.

.xview_scroll(n, unit) : Rola o canvas horizontalmente pelo valor especificado.

n: Número de unidades.

unit: Pode ser tk.UNITS ou tk.PAGES.

.yview(how, *args) : Ajusta a vista do canvas verticalmente.

how: Como ajustar a vista do canvas. Pode ser tk.MOVETO ou tk.SCROLL

*args: No caso de tk.MOVETO, é uma fração (0.0 para a posição mais acima e 1.0 para a posição mais abaixo); no caso de tk.SCROLL, é uma unidade e um contador. A unidade pode ser tk.UNITS ou tk.PAGES e o contador especifica quantas unidades mover para a baixo ou para cima (se negativo)

.yview_moveto(fracao) : Rola o canvas verticalmente pelo valor fracao.Este valor está no lado de cima do canvas.

fracao: Valor do deslocamento. 0.0 está no início da região de rolamento, 1.0 está no fim.

.yview_scroll(n, unit) : Rola o canvas verticalmente pelo valor especificado.

n: Número de unidades.

unit: Pode ser tk.UNITS ou tk.PAGES.

Exemplo :

from tkinter import *

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

canvas = Canvas(window, bg="yellow", height=250, width=300)

#desenha arco no canvas:
coord = 10, 50, 100, 200
arc = canvas.create_arc(coord, start=0, extent=150, fill="red")

#desenha poligono no canvas:
canvas.create_polygon(205,105,285,125,166,177,210,199,205,105, fill='blue')

#carrega imagem:
img = PhotoImage(file='alien_small1.gif')

#cria imagem no canvas:
canvas.create_image(115,200, image=img, anchor=CENTER)

canvas.pack()
window.mainloop()

Saída: