zoukankan      html  css  js  c++  java
  • 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同样也与事件绑定,这个与参考上的说法也不一致

  • 相关阅读:
    数据结构 AVL树
    数据结构 快速排序
    Mybatis 传递多个参数
    数据结构 二叉搜索树
    Java 多线程 ReadWriteLock
    Java 基础 集合框架
    SourceTree安装跳过注册
    【前端部署】阿里云 windows2019服务器用node部署静态项目
    【node开发】node简易服务器一分钟搞定
    【node开发】node.js编写一个接口
  • 原文地址:https://www.cnblogs.com/sallybin/p/3062923.html
Copyright © 2011-2022 走看看