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

  • 相关阅读:
    hdu1238 Substrings
    CCF试题:高速公路(Targin)
    hdu 1269 迷宫城堡(Targin算法)
    hdu 1253 胜利大逃亡
    NYOJ 55 懒省事的小明
    HDU 1024 Max Sum Plus Plus
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1257 最少拦截系统
    HDU 1069 Monkey and Banana
    HDU 1104 Remainder
  • 原文地址:https://www.cnblogs.com/LeeZz/p/3984339.html
Copyright © 2011-2022 走看看