• Tkinter之Canvas篇(3)


                                                   '''Tkinter教程之Canvas篇(3)'''
    '''16.移动item'''                                                                    
    # -*- coding: cp936 -*-
    # move指定x,y在偏移量
    from Tkinter import *
    root = Tk()
    # 创建一个Canvas,设置其背景色为白色
    cv = Canvas(root,bg = 'white')
    # 创建两个同样的rectangle,比较移动前后的不同
    rt1 = cv.create_rectangle(10,10,110,110,tags = ('r1','r2','r3'))
    cv.create_rectangle(10,10,110,110,tags = ('r1','r2','r3'))
    # 移动rt1
    cv.move(rt1,20,-10)
    cv.pack()
    root.mainloop()
    # move可以指定x,y在相对偏移量,可以为负值


    '''17.删除item'''                                                                                
    # -*- coding: cp936 -*-
    # delete删除给定的item
    from Tkinter import *
    root = Tk()
    cv = Canvas(root,bg = 'white')
    # 创建两个rectangle
    rt1 = cv.create_rectangle(10,10,110,110,tags = ('r1','r2','r3'))
    r2 = cv.create_rectangle(20,20,110,110,tags = ('s1','s2','s3'))
    # 使用id删除rt1
    cv.delete(rt1)
    # 使用tag删除r2
    cv.delete('s1')

    cv.pack()
    root.mainloop()
    # 两种方法删除item(id/tag)


    '''18.缩放item'''                                                                                
    # -*- coding: cp936 -*-
    # scale缩放item,计算公式:(coords - offset)*scale + offset
    from Tkinter import *
    root = Tk()
    cv = Canvas(root,bg = 'white')
    # 创建两个rectangle
    rt1 = cv.create_rectangle(10,10,110,110,tags = ('r1','r2','r3'))
    # 将y坐标放大为原来的2位,x坐标值不变
    cv.scale(rt1,0,0,1,2)
    cv.pack()
    root.mainloop()
    # scale的参数为(self,xoffset,yoffset,xscale,yscale)


    '''19.绑定item与event'''                                                                          
    # -*- coding: cp936 -*-
    # 使用tag_bind来绑定item与事件
    from Tkinter import *
    root = Tk()
    # 创建一个Canvas,设置其背景色为白色
    cv = Canvas(root,bg = 'white')
    # 创建三个rectangle
    rt1 = cv.create_rectangle(10,10,110,110, width = 8, tags = ('r1','r2','r3'))
    def printRect(event):
        print 'rectangle'
    # 绑定item与事件
    cv.tag_bind('r1','<Button-1>',printRect)
    cv.pack()
    root.mainloop()
    # 只有点击到矩形的边框时才会触发事件


    '''20.添加绑定事件'''                                                                                
    # -*- coding: cp936 -*-
    # 使用tag_bind来绑定item与事件,与参考上测试结果不一致。
    from Tkinter import *
    root = Tk()
    # 创建一个Canvas,设置其背景色为白色
    cv = Canvas(root,bg = 'white')
    # 创建三个rectangle
    rt1 = cv.create_rectangle(10,10,110,110, width = 8, tags = ('r1','r2','r3'))
    def printRect(event):
        print 'rectangle'
    def printLine(event):
        print 'line'
    # 绑定item与左键事件
    cv.tag_bind('r1','<Button-1>',printRect)
    # 绑定item与右键事件
    cv.tag_bind('r1','<Button-3>',printLine)
    cv.pack()
    root.mainloop()
    # 只有点击到矩形的边框时才会触发事件,不使用add参数,默认就是向这个item添加一个处理函数,它不会替换原来的事件函数,例子结果:既响应左键又响应右键


    '''21.绑定新的item与现有的tags'''                                                                     
    # -*- coding: cp936 -*-
    # 使用tag_bind来绑定item与事件,测试结果与参考上的说法不一致
    from Tkinter import *
    root = Tk()
    # 创建一个Canvas,设置其背景色为白色
    cv = Canvas(root,bg = 'white')
    # 创建三个rectangle
    rt1 = cv.create_rectangle(10,10,110,110, width = 8,tags = ('r1','r2','r3'))
    def printRect(event):
        print 'rectangle'
    def printLine(event):
        print 'line'
    # 绑定item与左键事件
    cv.tag_bind('r1','<Button-1>',printRect)
    # 绑定item与右键事件
    cv.tag_bind('r1','<Button-3>',printLine)
    # 创建一个line,并将其tags设置为'r1'
    cv.create_line(10,200,100,200,width = 5,tags = 'r1')
    cv.pack()
    root.mainloop()
    # 将事件与tag('r1')绑定后,创建新的item并指定已绑定事件的tag,新创建的item同样也与事件绑定,这个与参考上的说法也不一致

  • 相关阅读:
    Android-通过SlidingPaneLayout高仿微信6.2最新版手势滑动返回(一)
    B树
    nyoj448 寻找最大数
    IT痴汉的工作现状22-由Dalvik虚拟机引发的口水战
    POJ 3221 Diamond Puzzle.
    CMDBuild安装及webservice接口的获取
    安卓dex 文件结构简要说明
    安装RPM包或者安装源代码包
    Java程序性能优化技巧
    [Sqlite]--&gt;数据迁移备份--从低版本号3.6.2到高版本号3.8.6
  • 原文地址:https://www.cnblogs.com/sallybin/p/3062923.html
Copyright © 2020-2023  润新知