Tkinter教程之Canvas篇(3)

'''25.绘制位图'''
# -*- coding: utf-8 -*-
# 使用bitmap创建位图create_bitmap
from tkinter import *

root = Tk()
# 创建一个Canvas,设置其背景色为白色
cv = Canvas(root, bg='white')
d = {1: 'error', 2: 'info', 3: 'question', 4: 'hourglass'}
for i in d:
    cv.create_bitmap((20 * i, 20 * i), bitmap=d[i])
cv.pack()
root.mainloop()
# 使用bitmap属性来指定位图的名称,这个函数的第一个参数为一个点(x,y)指定位图存放位置的左上位置。

'''26.绘制GIF图像'''
# -*- coding: utf-8 -*-
# 创建gif图像create_image
from tkinter import *

root = Tk()
# 创建一个Canvas,设置其背景色为白色
cv = Canvas(root, bg='white')
img = PhotoImage(file='d:/1.png')
cv.create_image((150, 150), image=img)
cv.pack()
root.mainloop()
# 先使用PhotoImage创建GIF图像,再将image属性来设置为新创建的img

'''27.绘制直线'''
# -*- coding: utf-8 -*-
# 创建带箭头的直线create_line
from tkinter import *

root = Tk()
# 创建一个Canvas,设置其背景色为白色
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()
# 使用arrow属性来控制是否显示箭头

'''28.直线的joinstyle属性'''
# -*- coding: utf-8 -*-
# 创建直线,使用joinstyle属性
from tkinter import *

root = Tk()
# 创建一个Canvas,设置其背景色为白色
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()
# 将直线的属性joinstyle分别设置为bevel/miter/round,测试其效果。

'''29.绘制椭圆'''
# -*- coding: utf-8 -*-
# 绘制椭圆,使用create_oval属性
from tkinter import *

root = Tk()
# 创建一个Canvas,设置其背景色为白色
cv = Canvas(root, bg='white')
# 创建一个长200,宽100的椭圆
cv.create_oval((10, 10, 210, 110), fill='red')
cv.pack()
root.mainloop()
# 指定椭圆的长和宽,圆是长和宽相等的特殊情况。

'''30.创建多边形'''
# -*- coding: utf-8 -*-
# 创建多边形(三角形)
from tkinter import *

root = Tk()
# 绘制一个Canvas,设置其背景色为白色
cv = Canvas(root, bg='white')
# 创建一个直角三角形
cv.create_polygon((10, 10, 10, 200, 100, 200), fill='red')
cv.pack()
root.mainloop()
# 指定三个点的坐标,三个点坐标必须满足三角形的定义。

'''31.修饰图形'''
# -*- coding: utf-8 -*-
# 创建多边形create_ploygon(三角形)
from tkinter import *

root = Tk()
# 创建一个Canvas,设置其背景色为白色
cv = Canvas(root, bg='white')
# 创建一个直角三角形
cv.create_polygon((10, 10, 10, 200, 100, 200),
                  # smooth = True,   # 平滑处理,但未找到控制此参数的项
                  splinesteps=0,  # 不明白是控制什么的???
                  )
cv.pack()
root.mainloop()
# smooth/splinesteps用来修改绘制的图形,不明白这两个参数还有其它什么作用。

'''32.绘制文字'''
# -*- coding: utf-8 -*-
# 使用文字create_text
from tkinter import *

root = Tk()
# 创建一个Canvas,设置其背景色为白色
cv = Canvas(root, bg='white')
# 创建一个文字对象,默认设置为居中对齐
cv.create_text((10, 10), text='Hello Text',
               anchor=W
               )
cv.pack()
root.mainloop()
# 使用anchor控制文字的位置,使用justify控制对齐方式

'''33.选中文字'''
# -*- coding: utf-8 -*-
# 使用文字create_text
from tkinter import *

root = Tk()
# 创建一个Canvas,设置其背景色为白色
cv = Canvas(root, bg='white')
# 创建一个文字对象,默认设置为居中对齐
txt = cv.create_text((10, 10), text='Hello Text',
                     anchor=W
                     )
# 设置文本的选中起始位置
cv.select_from(txt, 2)
# 设置文本的选中结束位置
cv.select_to(txt, 5)

cv.pack()
root.mainloop()
# 使用anchor控制文字的位置,使用justify控制对齐方式

'''34.创建组件'''
# -*- coding: utf-8 -*-
# 使用子组件create_window
from tkinter import *

root = Tk()
# 创建一个Canvas,设置其背景色为白色
cv = Canvas(root, bg='white')


# 创建一个Button对象,默认设置为居中对齐
def printWindow():
    print('window')


bt = Button(cv, text='ClickMe', command=printWindow)
# 修改button在canvas上的对齐方式
cv.create_window((10, 10), window=bt, anchor=W)
# 新创建的line对象与button有重叠
cv.create_line(10, 10, 20, 20)
# 新创建的line不在button之上,即没有重叠
cv.create_line(30, 30, 100, 100)
cv.pack()
root.mainloop()
# 使用anchor组件在Canvas上的位置,默认情况下为居中对齐,这样使用后其它的item将不能再使用button战胜的那块区域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值