Canvas
bt = Canvas(parent, opcao=valor, ...)
O componente Canvas permite desenhar gráficos, assim como colocar nele componentes, frames ou texto.
Atributos
Opção | Descrição |
---|---|
bd ou borderwidth | Espessura da borda à volta do componente. Valor de defeito é 2 pixeis. |
bg ou background | Cor de fundo do componente. Cor de defeito é cinzento claro (‘#E4E4E4’). |
closeenough | Um 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. |
confine | Se True (valor de defeito) o canvas não pode ser rolado para fora da região scrollregion. |
cursor | Nome do cursor a ser mostrado quando o rato está sobre o componente. |
height | Altura do componente. |
highlightbackground | Cor do foco quando o componente nao tem o foco. |
highlightcolor | Cor do foco quando o componente tem o foco. |
highlightthickness | Espessura do foco. Valor de defeito 1. |
relief | Tipo de relevo do componente Canvas. Valor de defeito: tk.FLAT. |
scrollregion | Um 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. |
selectbackground, selectforeground, selectborderwidth | Cor de fundo, cor de primeiro plano e espessura da borda dos items selecionados. |
takefocus | Por 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. |
width | Largura do componente. |
xscrollincrement | Normalmente 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. |
xscrollcommand | Se o componente Canvas fôr rolável definir esta opção no método .set() da scrollbar horizontal. |
yscrollincrement | Como xscrollincrement mas para rolamentos verticais. |
xscrollcommand | Se 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 above, all, below, closest, enclosed, overlapping 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.
x, y: 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.
x1, y1: coordenadas do canto superior esquerdo.
x2, y2: 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.
x1, y1: coordenadas do canto superior esquerdo.
x2, y2: 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 x, y. Caso não exista nehum item retorna um tuplo vazio.
x, y: 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.
x1, y1: coordenadas do canto superior esquerdo.
x2, y2: 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.
x1, y1: coordenadas do canto superior esquerdo.
x2, y2: 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.
dx, dy: 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 xscale, yscale. 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:
