Tkinter极简例子——Canvas篇原创
原创Tkinter Canvas
Canvas极简例子
from tkinter import *
root = Tk()
cv = Canvas(root, bg=black)
cv.pack()
root.mainloop()
创建item
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
cv.create_rectangle(10, 10, 110, 110)
cv.pack()
root.mainloop()
指定item的填充色
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
cv.create_rectangle(10, 10, 110, 110, fill=red)
cv.pack()
root.mainloop()
指定item边框颜色的边框颜色
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
cv.create_rectangle(10, 10, 110, 110, outline=blue)
cv.pack()
root.mainloop()
指定item的边框的边框宽度
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
cv.create_rectangle(10, 10, 110, 110, outline=blue, width=5)
cv.pack()
root.mainloop()
画虚线
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
cv.create_rectangle(10, 10, 110, 110,
outline=blue,
width=5,
fill=green,
dash=10)
cv.pack()
root.mainloop()
画刷填充
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
cv.create_rectangle(10, 10, 110, 110,
outline=blue,
width=5,
fill=green,
dash=10,
stipple=gray12)
cv.pack()
root.mainloop()
修改item的坐标
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
rt = cv.create_rectangle(10, 10, 110, 110,
outline=blue,
width=5,
fill=green,
dash=10,
stipple=gray12)
cv.pack()
cv.coords(rt, (40, 40, 80, 80))
root.mainloop()
创建item的tags
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
rt = cv.create_rectangle(10, 10, 110, 110,
outline=blue,
width=5,
fill=green,
dash=10,
stipple=gray12,
tags=rl)
cv.pack()
print(cv.gettags(rt))
cv.itemconfig(rt, tags=(r2, r3, r4))
print(cv.gettags(rt))
root.mainloop()
多个item同用一个tag
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
rt = cv.create_rectangle(10, 10, 110, 110,
outline=blue,
width=5,
fill=green,
dash=10,
stipple=gray12,
tags=(r1, r2, r3))
cv.pack()
cv.create_rectangle(20, 20, 80, 80, tags=r3)
print(cv.find_withtag(r3))
root.mainloop()
通过tag访问item
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
rt = cv.create_rectangle(10, 10, 110, 110,
outline=blue,
width=5,
fill=green,
dash=10,
stipple=gray12,
tags=(r1, r2, r3))
cv.pack()
cv.create_rectangle(20, 20, 80, 80, tags=r3)
for item in cv.find_withtag(r3):
cv.itemconfig(item, outline=red)
root.mainloop()
向其他item添加tag
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
rt1 = cv.create_rectangle(10, 10, 110, 110,
tags=(r1, r2, r3))
rt2 = cv.create_rectangle(20, 20, 80, 80,
tags=(s1, s2, s3))
rt3 = cv.create_rectangle(30, 30, 70, 70,
tags=(y1, y2, y3))
cv.addtag_above(r4, rt2)
cv.addtag_below(r5, rt2)
for item in [rt1, rt2, rt3]:
print(cv.gettags(item))
root.mainloop()
返回其他item
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
rt1 = cv.create_rectangle(10, 10, 110, 110,
tags=(r1, r2, r3))
rt2 = cv.create_rectangle(20, 20, 80, 80,
tags=(s1, s2, s3))
rt3 = cv.create_rectangle(30, 30, 70, 70,
tags=(y1, y2, y3))
cv.itemconfig(cv.find_above(rt2), outline=purple)
cv.itemconfig(cv.find_below(rt2), outline=orange)
cv.pack()
root.mainloop()
改变item的顺序
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
rt1 = cv.create_rectangle(10, 10, 110, 110,
tags=(r1, r2, r3))
rt2 = cv.create_rectangle(20, 20, 80, 80,
tags=(s1, s2, s3))
rt3 = cv.create_rectangle(30, 30, 70, 70,
tags=(y1, y2, y3))
cv.tag_lower(rt1)
cv.tag_raise(rt3)
cv.itemconfig(cv.find_above(rt2), outline=red)
cv.itemconfig(cv.find_below(rt2), outline=green)
cv.pack()
root.mainloop()
移动item
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
rt1 = cv.create_rectangle(10, 10, 110, 110,
tags=(r1, r2, r3),
outline=green)
cv.create_rectangle(10, 10, 110, 110,
tags=(r1, r2, r3))
cv.move(rt1, 20, -10)
cv.pack()
root.mainloop()
删除item
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
rt1 = cv.create_rectangle(10, 10, 110, 110,
tags=(r1, r2, r3),
outline=green)
rt2 = cv.create_rectangle(20, 20, 100, 100,
tags=(s1, s2, s3))
cv.delete(rt1)
cv.delete(s1)
cv.pack()
root.mainloop()
缩放item
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
rt1 = cv.create_rectangle(10, 10, 110, 110,
tags=(r1, r2, r3),
outline=green)
cv.scale(rt1, 0, 0, 1, 2)
cv.pack()
root.mainloop()
绑定item与event
from tkinter import *
def printrect(event):
print(rectangle)
root = Tk()
cv = Canvas(root, bg=grey)
rt1 = cv.create_rectangle(10, 10, 110, 110,
tags=(r1, r2, r3),
outline=green,
width=8,
fill=blue)
cv.tag_bind(r1, , printrect)
cv.pack()
root.mainloop()
添加绑定事件添加绑定事件
from tkinter import *
def printrect(event):
print(rectangle)
def printline(event):
print(line)
root = Tk()
cv = Canvas(root, bg=grey)
rt1 = cv.create_rectangle(10, 10, 110, 110,
tags=(r1, r2, r3),
outline=green,
width=8)
cv.tag_bind(r1, , printrect)
cv.tag_bind(r1, , printline)
cv.pack()
root.mainloop()
绘制扇形
from tkinter import *
root = Tk()
cv = Canvas(root, bg=grey)
cv.create_arc((10, 10, 110, 110))
cv.pack()
root.mainloop()
扇形、弓形、弧形扇形、弓形、弧形扇形、弓形和弧形
from tkinter import *
root = Tk()
d = {1: PIESLICE, 2: CHORD, 3: ARC}
cv = Canvas(root, bg=grey)
for i in d:
cv.create_arc((10, 10 + 60*i, 110, 110 + 60*i), style=d[i])
print(i, d[i])
cv.pack()
root.mainloop()
设置角度
from tkinter import *
root = Tk()
d = {1: PIESLICE, 2: CHORD, 3: ARC}
cv = Canvas(root, bg=grey)
for i in d:
cv.create_arc((10, 10 + 60*i, 110, 110 + 60*i),
style=d[i],
start=30,
extent=30)
print(i, d[i])
cv.pack()
root.mainloop()
绘制位图
from tkinter import *
root = Tk()
d = {1: error, 2: info, 3: question, 4: hourglass}
cv = Canvas(root, bg=grey)
for i in d:
cv.create_bitmap((20*i, 20*i), bitmap=d[i])
cv.pack()
root.mainloop()
绘制gif图
from tkinter import *
root = Tk()
cv = Canvas(root, bg=white)
img = PhotoImage(file=c:\python.gif)
cv.create_image((150, 150), image=img)
cv.pack()
root.mainloop()
绘制直线
from tkinter import *
root = Tk()
cv = Canvas(root, bg=white)
d = [(0, none), (1, first), (2, last), (3, both)]
for i in d:
cv.create_line(
(10, 10 + i[0]*20, 110, 110 + i[0] * 20),
arrow=i[1],
arrowshape=40 40 10)
cv.pack()
root.mainloop()
joinstyle属性
from tkinter import *
root = Tk()
cv = Canvas(root, bg=white)
d = [(0, none, bevel), (1, first, miter), (2, last, round), (3, both, round)]
for i in d:
cv.create_line(
(10, 10 + i[0]*20, 110, 110 + i[0] * 20),
arrow=i[1],
arrowshape=8 10 3,
joinstyle=i[2]
)
cv.pack()
root.mainloop()
绘制椭圆
from tkinter import *
root = Tk()
cv = Canvas(root, bg=white)
cv.create_oval((10, 10, 210, 110), fill=red)
cv.pack()
root.mainloop()
绘制多边形绘制多边形绘制多边形
from tkinter import *
root = Tk()
cv = Canvas(root, bg=white)
cv.create_polygon((10, 10, 10, 200, 100, 200, 23, 23), fill=green)
cv.pack()
root.mainloop()
绘制文本
from tkinter import *
root = Tk()
cv = Canvas(root, bg=white)
cv.create_text((100, 10), text=hello text,
anchor=W)
cv.pack()
root.mainloop()
选中文本
from tkinter import *
root = Tk()
cv = Canvas(root, bg=white)
txt = cv.create_text((100, 10), text=hello text, anchor=W)
cv.select_from(txt, 2)
cv.select_to(txt, 5)
cv.pack()
root.mainloop()
创建组件
from tkinter import *
def printwindow():
print(window)
root = Tk()
cv = Canvas(root, bg=white)
bt = Button(cv,
text=click,
command=printwindow)
cv.create_window((100, 100),
window=bt,
anchor=S)
cv.create_line(80, 80, 200, 200)
cv.pack()
root.mainloop()
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除