• Tkinter教程之Canvas篇(3)


    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811922

    ''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同样也与事件绑定,这个与参考上的说法也不一致

  • 相关阅读:
    tensorflow 学习笔记 多层感知机
    tensorflow 学习笔记(转)
    python学习笔记 map&&reduce
    java中的接口和php的接口的区别
    php中的内存划分
    workerman stop失败
    Java中的内存划分
    php和java语法区别
    Docker:Swarm + Stack 一站式部署容器集群
    docker 配置私有仓库
  • 原文地址:https://www.cnblogs.com/LeeZz/p/3984339.html
Copyright © 2020-2023  润新知