*18.2.23 dchars(args)
*args传递的参数有3个:
(1)tagOrId:对象ID或者标签tag
(2)from:开始的字符位置
(3)to:可选项,结束的字符位置。
dchars的作用就是从tagOrId指定对象中,删除字符。删除从from指定的位置开始,到to指定的位置结束。如果to没有指定,则只删除一个字符。
import tkinter as tkroot=tk.Tk()root.geometry('320x240')b1=tk.Canvas(root)t=b1.create_text(120,20)b1.insert(t,tk.INSERT,'新年快乐')def delete(): b1.dchars(t,0)b2=tk.Button(root,text='Delete',command=delete)b2.pack()b1.pack()root.mainloop()
结果:
import tkinter as tkroot=tk.Tk()root.geometry('320x240')b1=tk.Canvas(root)t=b1.create_text(120,20,text='新年快乐')def delete(): b1.delete(t)b2=tk.Button(root,text='Delete',command=delete)b2.pack()b1.pack()root.mainloop()
结果:
import tkinter as tkroot=tk.Tk()root.geometry('320x240')b1=tk.Canvas(root)t=b1.create_text(120,20,text='新年快乐',tag='txt')def dtag(): b1.dtag(t,'txt') print(b1.gettags(t))b2=tk.Button(root,text='Dtag',command=dtag)b2.pack()b1.pack()print(b1.gettags(t))root.mainloop()
说明:tag(标签)的信息可以通过gettags()方法获取。
18.2.26 find_above(tagOrId)
返回在 tagOrId参数指定的对象之上的 ID。如果tagOrId是最顶端的对象,那么返回一个空元组。如果有多个对象符合要求,会返回最顶端的那个对象。tagOrId可以是对象ID,也可以是tag。
(1)tagOrId: 指定对象ID或者标签tag。
import tkinter as tkroot=tk.Tk()root.geometry('320x240')b1=tk.Canvas(root)t=b1.create_text(120,20,text='新年快乐',tag='txt')t2=b1.create_text(220,20,text='新年快乐2',tag='txt2')def find_above(): tag=b1.find_above(t) print(tag)b2=tk.Button(root,text='Find Above',command=find_above)b2.pack()b1.pack()root.mainloop()
结果:(2,)
说明:t2的值是2,所以返回的元组是(2,)
18.2.27 find_all()
返回 Canvas 控件上所有的对象。返回的格式是一个包括所有对象ID的元组。最顶端的对象在元组的最后一个。
18.2.28 find_below(tagOrId)
返回在 tagOrId参数指定的对象之下的 ID。如果tagOrId是最底层的对象,那么返回一个空元组。如果有多个对象符合要求,会返回最顶端的那个对象。tagOrId可以是对象ID,也可以是tag(标签)。
(1)tagOrId: 指定对象ID或者标签tag。
18.2.29 find_closest(x, y, halo=None, start=None)
返回一个元组,该元组包含最靠近坐标(x, y)的对象的ID。如果没有符合条件的对象,返回的是一个空的元组。可选参数halo设定一个距离,以(x, y)为中心,该距离内的所有画布对象均选中。可选参数start指定一个对象,该方法只返回在显示列表中低于但是最接近start指定对象的一个ID。
(1)x:水平坐标
(2)y: 垂直坐标
(3)halo: 设定一个距离,在以(x, y)为中心,该距离内的所有对象均选中。
(4)start:指定一个对象obj,位于显示列表中低于obj对象但是最靠近的对象被选中。
注:如果在没有指定halo和start参数的情况下,同时有多个对象符合条件,则为位于显示列表上方的那个对象被选中。
18.2.30 find_enclosed(x1, y1, x2, y2)
返回完全包含在限定矩形内所有对象的 ID。返回的对象一定是完全位于矩形范围内的,如果一个对象只是部分位于矩形范围内,则不会被选中。
(1)[x1,y1,x2,y2]:为限定矩形坐标。
18.2.31 find_overlapping(x1, y1, x2, y2)
返回所有与限定矩形有交叉或重叠的对象的 ID(当然也包含在限定矩形内的对象)。与find_enclosed的区别就是部分位于矩形范围内的对象也会被选中。
(1)[x1,y1,x2,y2]:为限定矩形坐标。
18.2.32 find_withtag(tagOrId)
返回 tagOrId指定的所有对象的 ID。tagOrId可以是单个对象的 ID,也可以是某个Tag
(1)tagOrId:对象ID或者标签tag。
*18.2.33. focus(args)
将焦点移动到指定的 *args第一个参数指定的对象(可以是单个对象的 ID,也可以是某个tag)上。如果有多个对象匹配,则将焦点移动到显示列表中第一个可以接受光标输入的画布对象。取消焦点的方法是调用focus(),也就是不带参数。
*18.2.34 gettags(args)
返回与 *args第一个参数相关联的所有 tags。第一个参数可以是单个对象的 ID,也可以是某个tag。
*18.2.35 icursor(args)
*args可以传递两个参数:
(1)tagOrId可以是单个对象的 ID,也可以是某个tag
(2)Inex:光标的位置。
icursor的作用是将光标移动到 tagOrId指定的对象, tagOrId指定的对象需要支持文本输入和获得焦点。
*18.2.36 index(args)
*args可以传递两个参数:
(1)tagOrId可以是单个对象的 ID,也可以是某个tag
(2)index 参数可以是:INSERT(当前光标的位置),END(最后一个字符的位置),SEL_FIRST(当前选中文本的起始位置),SEL_LAST(当前选中文本的结束位置),还可以使用格式为 “@x, y”(x 和 y 是画布坐标系)来获得与此坐标最接近的位置
index()的作用就是返回参数index 在指定 tagOrId中的位置。这个位置是一个整数。index()可以把用其他方式表示的位置信息转化为数值化位置信息。
*18.2.37 insert(args)
*args可以传递3个参数:
(1)tagOrId可以是单个对象的 ID,也可以是某个tag
(2)index 参数可以是:INSERT(当前光标的位置),END(最后一个字符的位置),SEL_FIRST(当前选中文本的起始位置),SEL_LAST(当前选中文本的结束位置),还可以使用格式为 “@x, y”(x 和 y 是画布坐标系)来获得与此坐标最接近的位置
(3)text: 要插入的文本
insert()的作用就是在允许进行文本编辑的对象的指定位置插入文本。
18.2.38. itemcget(tagOrId, option)
获得指定 tagOrId的选项的当前值
(1)tagOrId可以是单个对象的 ID,也可以是某个tag
(2)option:选项。具体的选项见前面创建画布对象的说明。
**18.2.39 itemconfig(tagOrId, options)
修改指定 tagOrId的选项的当前值
(1)tagOrId可以是单个对象的 ID,也可以是某个tag
(2)option:选项。
**18.2.40 itemconfigure(tagOrId, options)
跟 itemconfig() 的功能一样。
*18.2.41 lift(args)
将指定对象移动到显示列表的顶部。见tag_raise()。
*18.2.42 lower(args)
将指定对象移动到显示列表的底部。见tag_lower()。
*18.2.43 move(args)
*args可以传递的参数有:
(1)tagOrId:可以是单个对象的 ID,也可以是某个tag
(1)dx,dy: 增加的坐标值。dx,dy是要和现有的坐标相加,得到新的坐标值。也就是说新的坐标位置是(x+dx,y+dy)
将 tagOrId对象移动到新位置(x+dx, y+dy)
import tkinter as tkroot=tk.Tk()root.geometry('320x240')b1=tk.Canvas(root)t=b1.create_text(120,20,text='新年快乐')def move(): b1.move(t,50,100)b2=tk.Button(root,text='Move',command=move)b2.pack()b1.pack()root.mainloop()
结果:
选项 | 含义 |
---|---|
colormode | 该选项的值可以是:‘color’(颜色输出),‘gray’(灰阶输出)和 ‘mono’(黑白输出) |
file 该选项指定一个文件,将 PostScript 写入该文件中,如果忽略该选项,PostScript 将以字符串的形式返回 | |
height | 指定要打印的 Canvas 控件的高度,默认值是 Canvas 控件的整体高度 |
rotate | 如果该选项的值为 False,该页面将以纵向呈现 如果该选项的值为 True,该页面将以横向呈现 |
x | 开始打印的最左边位置,以Canvas坐标系表示 |
y | 开始打印的最顶端位置,以Canvas坐标系表示 |
width | 指定要打印的 Canvas 控件的宽度 默认值是 Canvas 控件的整体宽度 |
*18.2.45 scale(args)
*args传递的参数有:
(1)tagOrId可以是单个对象的 ID,也可以是某个tag
(2)xOrigin, yOrigin: 要缩放的位置
(3)xScale ,yScale 要缩放的比例
缩放 tagOrId指定的对象。tagOrId指定的对象到(xOrigin,yOrigin)的距离向量(xDistnace,yDistance)分别乘以(xScale,yScale),就是tagOrId的新的位置以及形状。
import tkinter as tkroot=tk.Tk()root.geometry('320x240')b1=tk.Canvas(root)t=b1.create_rectangle(120,50,140,70,fill='red')def Scale(): tag=b1.scale(t,50,50,2,2) b1.create_rectangle(120,50,140,70,fill='blue') b1.create_rectangle(50,50,70,70,fill='red')b2=tk.Button(root,text='Scale',command=Scale)b2.pack()b1.pack()root.mainloop()
结果:
import tkinter as tkroot=tk.Tk()root.geometry('320x240')b1=tk.Canvas(root)t=b1.create_rectangle(120,50,140,70,fill='red')t2=b1.create_rectangle(160,50,200,70,fill='red')def move_from(event): b1.scan_mark(event.x, event.y)def move_to(event): b1.scan_dragto(event.x, event.y, gain=1) b1.bind('<ButtonPress-1>', move_from)b1.bind('<B1-Motion>', move_to)b1.pack()root.mainloop()
说明:1)先绑定鼠标左键按下事件,回调函数中调用scan_mark()
2)再绑定鼠标移动事件,回调函数中调用scan_dargto()
通过调用绑定这两个事件以及调用scan_mark和scan_dargto方法,可以实现画布内容的拖动。
18.2.48 select_adjust(tagOrId, index)
调整文本对象的选中范围,使得给定的 index 参数指定的位置在范围内
(1)tagOrId可以是单个对象的 ID,也可以是某个tag
(2)index:指定index
18.2.49 select_clear()
取消 Canvas 控件中所有选中的文本对象。
18.2.50 select_from(tagOrId, index)
设定文本对象选中范围的起始位置为 index 参数指定的位置
(1)tagOrId可以是单个对象的 ID,也可以是某个tag
(2)index:指定index
18.2.51 select_item()
返回在Canvas 控件中有文本被选中的对象ID。如果没有则返回 None。
18.2.52 select_to(tagOrId, index)
设定文本对象选中范围的结束位置为 index 参数指定的位置
(1)tagOrId可以是单个对象的 ID,也可以是某个tag
(2)index:指定index
import tkinter as tkroot=tk.Tk()root.geometry('320x240')b1=tk.Canvas(root)t=b1.create_text(120,50,text='新年快乐')def sel(): b1.select_from(t,1) b1.select_to(t,2)b2=tk.Button(root,text='Select',command=sel)b2.pack()b1.pack()root.mainloop()
结果:
import tkinter as tkroot=tk.Tk()root.geometry('320x240')b1=tk.Canvas(root)for i in range(5): b1.create_text(120,10+i*20, text='新年快乐',tag=str(i))b3=tk.Text(b1,width=20,height=4)w=b1.create_window(120,150,window=b3,tag='win')def lift(): b1.tag_raise('win','3') b3.insert(tk.END,'\n') b3.insert(tk.END,b1.find_all())b2=tk.Button(root,text='Raise',command=lift)b2.pack()b1.pack()b3.insert(tk.END,b1.find_all())root.mainloop()
结果:
联系客服