18.2 Métodos
método | describir |
---|---|
addtag(*argumentos) | Función interna, utilizada para agregar varios procesamientos de etiquetas. |
addtag_above(nuevaetiqueta,etiquetaOrId) | Agregue una etiqueta al objeto sobre el objeto especificado por tagOrId. |
addtag_all(nueva etiqueta) | Agregue una etiqueta a todos los objetos en el control de lienzo |
addtag_below(nuevaetiqueta, etiquetaOrId) | Agregar etiqueta al siguiente objeto del objeto especificado por tagOrId |
addtag_closest(nuevaetiqueta, x, y, halo=Ninguno, inicio=Ninguno) | Agregue una etiqueta al objeto más cercano a las coordenadas (x, y) |
addtag_enclosed(nueva etiqueta, x1, y1, x2, y2) | Agregue etiquetas a todos los objetos dentro del rectángulo definido por [x1,y1,x2,y2] |
addtag_overlapping(nueva etiqueta, x1, y1, x2, y2) | Agregue etiquetas para el parámetro newtag. newtag puede ser un objeto o una etiqueta |
addtag_withtag(nuevaetiqueta, etiquetaOrId) | Agregar etiquetas para el parámetro tagOrId |
bbox(*argumentos) | Devuelve el rectángulo delimitador que contiene el objeto especificado |
tag_unbind(tagOrId, secuencia, funcid=Ninguno) | Desvincular evento de tagOrId |
tag_bind(tagOrId, secuencia=Ninguno, func=Ninguno, add=Ninguno) | Métodos de enlace para objetos en el control Canvas. |
canvasx(pantallax, espacio entre cuadrículas=Ninguno) | Convierta la coordenada X del sistema de coordenadas de la ventana al sistema de coordenadas del lienzo |
canvasy(screeny, gridspacing=Ninguno) | Convierta la coordenada Y del sistema de coordenadas de la ventana al sistema de coordenadas del lienzo |
config(**opciones) | Modificar el valor de propiedad de uno o más controles de lienzo |
coordenadas(*argumentos) | Devuelve las coordenadas y el tamaño del objeto especificado o modifica las coordenadas y el tamaño del objeto especificado |
create_arc(*argumentos, **kw) | Crea un arco (ARC), abanico (PIESLICE) o lazo (CHORD) dentro del rectángulo definido. |
create_bitmap(posición, **opciones) | Crea un mapa de bits en la ubicación especificada en el lienzo. |
create_image(posición, **opciones) | Cree un objeto de imagen en la posición especificada en el lienzo. |
create_line(coords, **opciones) | Crea uno o más segmentos de línea en el lienzo en las coordenadas proporcionadas por coords. |
create_oval(bbox, **opciones) | Crea una elipse en el lienzo basada en el rectángulo delimitador bbox. |
create_polygon(coords, **opciones) | Dibuja un polígono en el lienzo en las coordenadas dadas por coords. |
create_rectangle(bbox, **opciones) | Cree un rectángulo en el lienzo de acuerdo con el bbox del rectángulo delimitador. |
create_text(posición, **opciones) | Crear un objeto de texto en la posición (x, y) especificada por position |
create_window(posición, **opciones) | Crear un widget en la posición (x, y) especificada por posición |
dchars(*argumentos) | eliminar caracteres |
borrar(*argumentos) | eliminar objeto especificado |
dtag(*argumentos) | eliminar etiqueta |
encontrar_encima(tagOrId) | Devuelve el ID sobre el objeto especificado por el parámetro tagOrId. |
encuentra todos() | Devuelve todos los objetos del control Canvas. |
encontrar_abajo(etiquetaOrId) | Devuelve el ID del objeto especificado por el parámetro tagOrId. |
find_closest(x, y, halo=Ninguno, inicio=Ninguno) | Devuelve una tupla que contiene el ID del objeto más cercano a las coordenadas (x, y). |
encontrar_encerrado(x1, y1, x2, y2) | Devuelve los ID de todos los objetos completamente contenidos dentro del rectángulo delimitador. |
encontrar_superposición(x1, y1, x2, y2) | Devuelve los ID de todos los objetos que intersecan o superponen el rectángulo delimitador |
find_withtag(tagOrId) | 返回 tagOrId指定的所有对象的 ID |
focus(*args) | 将焦点移动到指定的 *args第一个参数指定的对象 |
gettags(*args) | 返回与 *args第一个参数相关联的所有 tags。 |
icursor(*args) | 将光标移动到 tagOrId指定的对象 |
index(*args) | 返回参数index 在指定 tagOrId中的位置 |
insert(*args) | 在允许进行文本编辑的对象的指定位置插入文本。 |
itemcget(tagOrId, option) | 获得指定 tagOrId的选项的当前值 |
itemconfigure(tagOrId, cnf=None, **kw) | 修改指定 tagOrId的选项的当前值 |
tag_lower(*args) | 将一个或多个对象移至底部或者某一指定对象的下面。 |
move(*args) | 将 tagOrId对象移动到新位置 |
postscript(cnf={}, **kw) | 将 Canvas 的当前内容封装成 PostScript格式表示 |
tag_raise(*args) | 将一个或多个对象移至顶部。 |
scale(*args) | 缩放 tagOrId指定的对象 |
scan_dragto(x,y,gain=10) | 实现 Canvas 内容的滚动 |
scan_mark(x,y) | 实现 Canvas 内容的滚动 |
select_adjust(tagOrId, index) | 调整文本对象的选中范围,使得给定的 index 参数指定的位置在范围内。 |
select_clear() | 取消 Canvas 控件中所有选中的文本对象 |
select_from(tagOrId, index) | 设定文本对象选中范围的起始位置为 index 参数指定的位置。 |
select_item() | 返回在Canvas 控件中有文本被选中的对象ID。 |
select_to(tagOrId, index) | 设定文本对象选中范围的结束位置为 index 参数指定的位置。 |
type(tagOrId) | 返回指定对象的类型。 |
18.2.1 addtag( *args) | |
addtag()是内部函数,用于处理各种添加tag的方法。标签(tag)可以看作是对象的别名,在程序中可以直接使用标签来设置相应对象的属性。不过,不同的对象可以有相同的标签,就好比有多个人的小名叫小明一样。另外,同一个对象也可以有多个标签,就好比很多人有多个外号一样。调用addtag一般使用的参数包括: | |
(1)tag:标签的名字 | |
(2)method: 如何添加标签。可以选择的方法有:“above”, “all”, “below”, “closest”, “enclosed”, “overlapping” or “withtag”。 | |
(3)*args:tag的属性参数。 |
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b2=b1.create_arc(50,50,200,200,width=5)
b1.addtag('tag1','all')
b1.pack()
root.mainloop()
18.2.2 addtag_above(newtag, tagOrId)
在画布控件中,添加的对象是使用堆栈的方式存放于管理的。也就是说,后创建的对象在最上面。addtag_above函数,就是给在指定对象的上面的对象添加标签。
比如,创建了一个矩形对象R,然后在创建一个直线对象L,调用addtag_above(‘Line’,R)的作用,就是给直线对象L,添加了一个标签’Line’。
(1)newtag:标签的名字
(2)tagOrId:可以是参考对象,也可以是标签。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b2=b1.create_rectangle(20,40,250,100,width=3)
b3=b1.create_line(50,150,200,200,width=5)
b1.addtag_above('line',b2)
b1.pack()
print(b1.gettags(b3))
root.mainloop()
结果:
('line',)
注:该方法相当于 addtag(tag, “above”, item)
18.2.3 addtag_all(newtag)
给画布控件内的所有对象添加一个标签。
(1)newtag:标签名字
注:该方法相当于 addtag(tag, “all”)
18.2.4 addtag_below(newtag, tagOrId)
类似于addtag_above。不过是给指定对象的堆栈下面一个对象添加标签。
注:该方法相当于 addtag(tag, “below”, tagOrId)
18.2.5 addtag_closest(newtag, x, y, halo=None, start=None)
给最靠近坐标(x,y)的对象添加标签。这个功能只要在画布控件上有对象存在,就会成功。坐标的参照点是画布控件,而不是屏幕坐标或者窗口坐标。
(1)newtag:标签名字
(2)x:水平坐标
(3)y: 垂直坐标
(4)halo: 设定一个距离,在以(x, y)为中心,该距离内的所有画布对象均添加标签。
(5)start:指定一个对象,为低于但最接近该对象的画布对象添加标签
注:如果果同时由几个对象与给定坐标(x, y)的距离相同,则为位于显示列表上方的那个画布对象添加标签
18.2.6 addtag_enclosed(newtag, x1, y1, x2, y2)
给在[x1,y1,x2,y2]定义的矩形范围内的所有对象添加标签。对象必须完全在[x1,y1,x2,y2]定义的矩形范围内,如果只是部分在该矩形范围内,则不会添加标签。有重叠的部分也不会添加标签。
注: 该方法相当于 addtag(tag, “enclosed”, x1, y1, x2,y2)
(1)newtag:标签名字。
(2)x1,y1,x2,y2:矩形的坐标。(x1,y1)是左上点,(x2,y2)是右下点。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b2=b1.create_rectangle(20,40,250,100,width=3)
b3=b1.create_line(50,150,200,200,width=5)
b1.addtag_above('line',b2)
b1.addtag_enclosed('notin',10,30,300,190)
b1.create_rectangle(20,30,300,190,width=3,dash=True)
b1.pack()
print('矩形完全位于范围内:',b1.gettags(b2))
print('线段部分位于矩形范围内:',b1.gettags(b3))
root.mainloop()
结果:
矩形完全位于范围内: ('notin',)
线段部分位于矩形范围内: ('line',)
18.2.7 addtag_overlapping(newtag, x1, y1, x2, y2)
给跟[x1,y1,x2,y2]定义的矩形有交叉或重叠的所有对象添加标签。该方法比addtag_enclosed范围更广。区别就是只要和矩形[x1,y1,x2,y2]有交叉就可以,而不是必须完全在该矩形范围内。
(1)newtag:标签名字。
(2)x1,y1,x2,y2:矩形的坐标。(x1,y1)是左上点,(x2,y2)是右下点。
注: 该方法相当于 addtag(tag, “overlapping”, x1, y1,x2, y2)
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b2=b1.create_rectangle(20,40,250,100,width=3)
b3=b1.create_line(50,150,200,200,width=5)
b1.addtag_above('line',b2)
b1.addtag_overlapping('overlapping',10,30,300,190)
b1.create_rectangle(20,30,300,190,width=3,dash=True)
b1.pack()
print('矩形完全位于范围内:',b1.gettags(b2))
print('线段部分位于矩形范围内:\n',b1.gettags(b3))
root.mainloop()
结果:
矩形完全位于范围内: ('overlapping',)
线段部分位于矩形范围内:
('line', 'overlapping')
说明:可以看见只有部分位于矩形内部的线段这个时候也添加了标签。
18.2.8 addtag_withtag(newtag, tagOrId)
为tagOrId参数添加标签。tagOrId可以是对象,也可以是标签。
(1)newtag:新的标签
(2)tagOrId:可以是对象,也可以标签。
18.2.9 bbox(args)
返回一个能够包括args指定的所有对象所在的矩形。这个矩形是包含所有的对象或者tag的。返回的矩形边界值,可能会有几个像素的误差。
(1)*args: 指定对象
(2)返回值: 一个四元组,定义了一个矩形区域。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b2=b1.create_line(20,40,250,100,width=3)
b3=b1.create_rectangle(10,100,300,200)
b1.pack()
print(b1.bbox(b2,b3))
root.mainloop()
结果:
(9, 36, 301, 201)
18.2.10 canvasx(screenx, gridspacing=None)
将窗口坐标系的 X 坐标转化为画布坐标系
(1)screenx:窗口x坐标
(2)gridspacing:返回值将为该参数的整数倍
(3)返回值:画布坐标系数值
18.2.11 canvasy(screeny, gridspacing=None)
将窗口坐标系的 Y 坐标转化为画布坐标系
(1)screeny:窗口y坐标
(2)gridspacing:返回值将为该参数的整数倍
(3)返回值:画布坐标系数值
18.2.12 config(**options)
修改一个或者多个画布控件的属性值。如果没有给定属性值,会返回一个包含目前所有属性值的数据字典。属性值说明,见表格 18.1中的属性表格。
18.2.13 coords(*args)
返回指定对象的坐标与大小或者修改指定对象的坐标与大小。
(1)tagOrId:第一个参数是指定的对象或者标签。
(2)coords:一组四元组坐标列表,会用这些坐标取代匹配的对象的坐标。也就是tagOrId指定的对象会改变大小和位置。
(3)如果没有给定coords参数,返回值是tagOrId指定对象的四元组。