python tkinter canvas有方法itemcget、itemconfig和type。现在介绍三个方法的使用。这里先介绍一下函数形参*args和**options的意义。很多函数有多个参数,很多参数有默认值。用户在调用函数时可能只给部分参数赋值,其他参数可能采用默认值。在说明函数用法时预先并不知道, 函数使用者会传递多少个参数给函数, 所以在此情况下就需要使用这两个关键字。*args和**options说明参数数目不定,但格式不同。*args表示任何多个无名参数,它本质是一个tuple(元组),**options表示关键字参数,它本质上是一个dict,即字典,但要求所有key(键)数据类型不变,值数据类型可变。
1.itemcget(item, option)
参数item可以是Canvas上某对象(例如:text对象)的ID,也可以是其Tag值,参数option是Canvas上由参数item指定的某对象的某个属性名称,该方法返回Canvas上由参数item指定的某对象某属性值,例如:
root = tk.Tk()
cv = tk.Canvas(root, height=300, width=300)
cID=cv.create_oval(40, 20, 100,80,fill = "pink",tags=('R'))
current_color = cv.itemcget('R', 'fill')
current_color = cv.itemcget(cID, 'fill')
2.itemconfig(item, **options)
参数item意义同上。该方法修改Canvas上由参数item指定的某对象(例如:text对象)的一个或多个由参数**options指定的属性值,例如:
root = tk.Tk()
cv = tk.Canvas(root, height=300, width=300)
cID=cv.create_text(100,100,text='红色',fill="red",tags=('R'))
cv.itemconfig('R', fill='black',text='黑色')
cv.itemconfig(cID, fill='black')
3.type(item)
参数item意义同上。该方法返回Canvas上由参数item 指定的某对象(例如:text对象)的类型。返回值可以是:“arc”, “bitmap”, “image”, “line”, “oval”, “polygon”, “rectangle”, “text”, 或 “window”。例如:
root = tk.Tk()
cv = tk.Canvas(root, height=300, width=300)
cv.create_text(100,100,text='红色',fill="red",tags=('R'))
a=cv.type('R') #为字符串'text'
下边是一个简单的例子,初始在窗体显示红色字符’红色’,单击字符,变为显示黑色字符’黑色’,再单击字符,重新变为显示红色字符’红色’,如此循环。右击字符显示字符串’是text’。代码如下:
import tkinter as tk
root = tk.Tk()
cv = tk.Canvas(root, height=300, width=300)
cv.pack()
def onRclick(event):
cv.itemconfig('R',text='是'+cv.type('R'))
def onclick(event):
current_color = cv.itemcget('R', 'fill')
if current_color == 'red':
cv.itemconfig('R', fill='black',text='黑色')
else:
cv.itemconfig(tID, fill='red',text='红色')
tID=cv.create_text(100,100,text='红色',fill="red",tags=('R'),font=("Arial",40))
cv.tag_bind('R','<Button-1>', onclick)
cv.tag_bind(tID,'<Button-3>', onRclick)
root.mainloop()