18.2.19 create_polygon(coords, **options)
根据 coords 给定的坐标,在画布上绘制一个多边形。
(1)coords:给定多边形的坐标
(2)options:选项的具体含义:
选项 | 含义 |
---|---|
activedash | 当鼠标经过多边形对象的时候,绘制虚线边框 |
activefill | 当鼠标经过多边形对象的时候,填充颜色 |
activeoutline | 当鼠标经过多边形对象的时候,绘制轮廓线 |
activeoutlinestipple | 当鼠标经过多边形对象的时候,指定填充轮廓的位图 |
activestipple | 当鼠标经过多边形对象的时候,指定填充的位图 |
activewidth | 当鼠标经过多边形对象的时候,指定边框的宽度 |
dash | 指定绘制虚线轮廓 |
dashoffset | 指定虚线轮廓开始的偏移位置,该参数无效 |
disableddash | 当多边形对象状态为 DISABLE 的时候,绘制虚线 |
disabledfill | 当多边形对象状态为 DISABLE 的时候,填充颜色 |
disabledoutline | 当多边形对象状态为 DISABLE 的时候,绘制轮廓线 |
disabledoutlinestipple | 当多边形对象状态为 DISABLE 的时候,指定填充轮廓的位图 |
disabledstipple | 当多边形对象状态为 DISABLE 的时候,指定填充的位图 |
disabledwidth | 当多边形对象状态为 DISABLE 的时候,指定边框的宽度 |
fill | 指定填充的颜色,空字符串表示透明 |
joinstyle | 指定当绘制两个相邻线段之间接口的样式,该选项的值可以是: ROUND(以连接点为圆心,1/2 width 选项设置的长度为半径绘制圆角) BEVEL(在连接点处对两线段的夹角平切) MITER(沿着两线段的夹角延伸至一个点) 默认值是 ROUND |
offset | 指定填充位图的偏移,该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER |
outline | 指定轮廓的颜色 |
outlineoffset | 指绘制填充轮廓位图的偏移,该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER |
outlinestipple | 当 outline 选项被设置时,该选项用于指定一个位图来填充边框,默认值是空字符串,表示黑色 |
smooth | 该选项的值为 True 时,将绘制贝塞尔样条曲线代替线段。默认值为 False |
splinesteps | 当绘制贝塞尔样条曲线的时候,该选项指定由多少条折线来构成曲线,默认值是 12。只有当 smooth 选项为 True 时该选项才能生效 |
state | 指定该多边形对象的状态,可以是 NORMAL,DISABLED(不可用,不响应事件)和 HIDDEN(隐藏)。默认值是 NORMAL |
tags | 为创建的多边形对象添加标签 |
width | 指定边框的宽度 |
18.2.19.1 activedash | |
鼠标经过多边形的时候,边框显示为虚线。 |
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
pol1=b1.create_polygon(20,40,150,100,140,160,30,120,
width=10,activedash=True,
outline='blue')
b1.pack()
root.mainloop()
结果:
说明:需要设置outline或者activeoutline,否则多边形默认是没有边框的。activedash就不会起作用了。
18.2.19.2 activefill
鼠标经过多边形的时候,多边形内部的颜色。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
pol1=b1.create_polygon(20,40,150,100,140,160,30,120,
activefill='red')
b1.pack()
root.mainloop()
结果:
18.2.19.3 activeoutline
鼠标经过多边形的时候,多边形轮廓线的颜色。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
pol1=b1.create_polygon(20,40,150,100,140,160,30,120,
width=10,activeoutline='red')
b1.pack()
root.mainloop()
结果:
18.2.19.4 activeoutlinestipple
定义鼠标经过多边形的时候,填充多边形轮廓线的bitmap。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
pol1=b1.create_polygon(20,40,150,100,140,160,30,120,
width=10,activeoutline='red',
activeoutlinestipple='error')
b1.pack()
root.mainloop()
结果:
18.2.19.5 activestipple
定义鼠标经过多边形的时候,填充多边形的bitmap。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
pol1=b1.create_polygon(20,40,150,100,140,160,30,120,
width=10,activeoutline='red',
activestipple='@x.xbm')
b1.pack()
root.mainloop()
结果:
18.2.19.6 activewidth
定义鼠标经过多边形的时候,边框的宽度。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
pol1=b1.create_polygon(20,40,150,100,140,160,30,120,
width=10,activewidth=20,
activeoutline='red')
b1.pack()
root.mainloop()
结果:
说明:如果activewidth的数值小于width的数值,则边框的宽度没有变化。
18.2.19.7 dash
绘制虚线边框。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
pol1=b1.create_polygon(20,40,150,100,140,160,30,120,
width=10,outline='blue',dash=True)
b1.pack()
root.mainloop()
结果:
18.2.19.8 dashoffset
此参数不起作用。
18.2.19.9 disableddash
当多边形的状态是tk.DISABLED的时候,显示虚线边框。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
def state():
b1.itemconfigure(pol1,state=tk.DISABLED)
b2=tk.Button(root,text='Disabled',command=state)
b2.pack()
pol1=b1.create_polygon(20,40,150,100,140,160,30,120,
width=5,outline='blue',
disableddash=True)
b1.pack()
root.mainloop()
结果:
18.2.19.10 disabledfill
当多边形的状态是tk.DISABLED的时候,多边形的填充颜色。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
def state():
b1.itemconfigure(pol1,state=tk.DISABLED)
b2=tk.Button(root,text='Disabled',command=state)
b2.pack()
pol1=b1.create_polygon(20,40,150,100,140,160,30,120,
width=5,outline='blue',
disabledfill='red')
b1.pack()
root.mainloop()
结果:
18.2.19.11 disabledoutline
当多边形的状态是tk.DISABLED的时候,绘制轮廓线的颜色。用法参见18.2.19.3 activeoutline节。
18.2.19.12 disabledoutlinestipple
当多边形的状态是tk.DISABLED的时候,轮廓线的填充bitmap。用法参见18.2.19.4 activeoutlinestipple节。
18.2.19.13 disabledstipple
当多边形的状态是tk.DISABLED的时候,填充多边形的bitmap。用法参见18.2.19.5 activestipple节。
18.2.19.14 disabledwidth
当多边形的状态是tk.DISABLED的时候,多边形边框的宽度。用法参见18.2.19.6 activewidth节。
18.2.19.15 fill
多边形内部的填充颜色。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
pol1=b1.create_polygon(20,40,150,100,140,160,30,120,
width=5,outline='blue',fill='red')
b1.pack()
root.mainloop()
结果:
18.2.19.16 joinstyle
定义多边形线段交汇的模式,有三种ROUND、BEVEL和MITER。详细的说明见18.2.17.15。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
pol1=b1.create_polygon(20,40,250,100,140,160,30,120,
width=25,outline='blue',
joinstyle='round')
b1.pack()
root.mainloop()
结果:
18.2.19.17 offset
使用bitmap作为底纹填充时候的如何放置bitmap。参见18.2.17.16 的说明。
18.2.19.18 outline
指定轮廓线的颜色。如果没有指定轮廓线的颜色,会使用内部填充的颜色。默认值是黑色的。
18.2.19.19 outlineoffset
使用bitmap作为底纹填充轮廓线时候的如何放置bitmap。见18.2.17.16的说明。
18.2.19.20 outlinestipple
指定填充轮廓线的bitmap。用法参见18.2.19.4 activeoutlinestipple节。
18.2.19.21 smooth
是否让多边形的边框光滑处理。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
pol1=b1.create_polygon(20,40,250,100,140,160,30,120,
width=15,outline='blue',
smooth=True)
b1.pack()
root.mainloop()
结果:
18.2.19.22 splinesteps
当smooth=True时,如何光滑曲线?可以靠splinesteps。此参数定义线段2个点之间的光滑曲线的步长,点数越多,曲线越光滑。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
pol1=b1.create_polygon(20,40,250,100,140,160,30,120,
width=15,outline='blue',
smooth=True,splinesteps=3)
b1.pack()
root.mainloop()
结果:
18.2.19.23 state
定义多边形的状态。有三种:NORMAL、DISABLED和HIDDEN
18.2.19.24 stipple
指定填充多边形的bitmap。用法参见18.2.19.5 activestipple。
18.2.19.25 tags
给多边形指定标签。也可以通过其他方法指定。
18.2.19.26 width
定义多边形轮廓线的宽度。