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

  • 相关阅读:
    用友U8远程接入客户端提示启动客户端错误
    oracle 10g 错误 ORA-01653 的解决过程
    用友 凭证引入 如何删除引入的外部凭证
    Delphi实现程序只运行一次并激活已打开的程序
    Delphi Raize的日期控件RzDateTimeEdit星期几不能正确显示的问题
    U8 提示“操作员没有查询权限或视图权限”
    数据库图片存储也读取
    Delph最简单i获取外网IP
    cxgrid 单元格合并
    cocos2d 中使用 pickerView 简单的老虎机应用
  • 原文地址:https://www.cnblogs.com/LeeZz/p/3984339.html
Copyright © 2011-2022 走看看