zoukankan      html  css  js  c++  java
  • Tkinter之Canvas篇(4)

                                                  '''Tkinter之Canvas(4)篇'''
    '''22.绘制弧形'''                                                                
    # -*- coding: cp936 -*-
    # 创建一个ARC
    from Tkinter import *
    root = Tk()
    # 创建一个Canvas,设置其背景色为白色
    cv = Canvas(root,bg = 'white')
    cv.create_arc((10,10,110,110),)
    cv.pack()
    root.mainloop()
    # 使用默认参数创建一个ARC,结果为90度的扇形


    '''23.设置弧形的样式'''                                                           
    # -*- coding: cp936 -*-
    # 创建create_arc.
    from Tkinter import *
    root = Tk()
    # 创建一个Canvas,设置其背景色为白色
    cv = Canvas(root,bg = 'white')
    d = {1:PIESLICE,2:CHORD,3:ARC}
    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()
    # 使用三种样式,分别创建了扇形、弓形和弧形


    '''24.设置弧形的角度'''                                                        
    # -*- coding: cp936 -*-
    # 使用start/extent指定起始角度与偏移角度
    from Tkinter import *
    root = Tk()
    # 创建一个Canvas,设置其背景色为白色
    cv = Canvas(root,bg = 'white')
    d = {1:PIESLICE,2:CHORD,3:ARC}
    for i in d:
        cv.create_arc(
            (10,10 + 60*i,110,110 + 60*i),
            style = d[i], #指定样式
            start = 30, #指定起始角度
            extent = 30 #指定角度偏移量
            )
    cv.pack()
    root.mainloop()
    # 使用三种样式,start指定起始角度;extent指定角度偏移


    '''25.绘制位图'''                                                                 
    # -*- coding: cp936 -*-
    # 使用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: cp936 -*-
    # 创建gif图像create_image
    from Tkinter import *
    root = Tk()
    # 创建一个Canvas,设置其背景色为白色
    cv = Canvas(root,bg = 'white')
    img = PhotoImage(file = 'c:\\python.gif')
    cv.create_image((150,150),image = img)
    cv.pack()
    root.mainloop()
    # 先使用PhotoImage创建GIF图像,再将image属性来设置为新创建的img


    '''27.绘制直线'''                                                                  
    # -*- coding: cp936 -*-
    # 创建带箭头的直线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: cp936 -*-
    # 创建直线,使用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: cp936 -*-
    # 绘制椭圆,使用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: cp936 -*-
    # 创建多边形(三角形)
    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: cp936 -*-
    # 创建多边形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: cp936 -*-
    # 使用文字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: cp936 -*-
    # 使用文字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: cp936 -*-
    # 使用子组件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战胜的那块区域

  • 相关阅读:
    phpstorm设置断点调试(转载)
    tp5引用样式路径没反应(转载)
    thinkphp5 关于加载静态资源路径问题(下载)
    jQuery多次选中checkbox失效(转载)
    redis的持久化及配置
    mysql+es+fastdfs+MongoDB的备份及灾备
    es的集群加密码
    redis-cluster的部署安装
    tomcat的日志分割脚本
    ansible介绍
  • 原文地址:https://www.cnblogs.com/sallybin/p/3062938.html
Copyright © 2011-2022 走看看