Python tkinter -- Capítulo 18 Métodos de control de Canvas (1)

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指定对象的四元组。

Supongo que te gusta

Origin blog.csdn.net/weixin_42272768/article/details/100811778
Recomendado
Clasificación