tkinter -- Event(1)

发布时间:2018-06-09 12:16:02编辑:Run阅读(1586)

    事件的使用方法

    测试鼠标点击(Click)事件

    代码:

    import tkinter as tk
    root = tk.Tk()
    
    # 测试鼠标点击事件
    def printcoords(event):
        print(event.x, event.y)
    
    # 创建第一个 Button,并将它与左键事件绑定
    bt1 = tk.Button(root, text='leftmost button')
    bt1.bind('<Button-1>', printcoords)
    
    # 创建二个 Button,并将它与中键事件绑定
    bt2 = tk.Button(root, text='middle button')
    bt2.bind('<Button-2>', printcoords)
    
    # 创建第三个 Button,并将它与右击事件绑定
    bt3 = tk.Button(root, text='rightmost button')
    bt3.bind('<Button-3>', printcoords)
    
    # 创建第四个 Button,并将它与双击事件绑定
    bt4 = tk.Button(root, text='double click')
    bt4.bind('<Double-Button-1>', printcoords)
    
    # 创建第五个 Button,并将它与三击事件绑定
    bt5 = tk.Button(root, text='triple click')
    bt5.bind('<Triple-Button-1>', printcoords)
    
    bt1.grid()
    bt2.grid()
    bt3.grid()
    bt4.grid()
    bt5.grid()
    root.mainloop()

    结果:

    blob.png

    分别测试鼠标的事件,回调函数的参数 event 中(x,y)表示当前点击的坐标值



    测试鼠标的移动(Motion)事件

    测试鼠标移动事件

    代码:

    import tkinter as tk
    root = tk.Tk()
    
    # 测试鼠标点击事件
    def printcoords(event):
        print(event.x, event.y)
    
    # 创建第一个 Button,并将它与右击移动事件绑定
    bt1 = tk.Button(root, text='leftmost button')
    bt1.bind('<B1-Motion>', printcoords)
    
    # 创建第二个 Button,并将它与右击移动事件绑定
    bt2 = tk.Button(root, text='middle button')
    bt2.bind('<B2-Motion>', printcoords)
    
    # 创建第三个 Button,并将它与右击移动事件绑定
    bt3 = tk.Button(root, text='rightmost button')
    bt3.bind('<B3-Motion>', printcoords)
    
    
    bt1.grid()
    bt2.grid()
    bt3.grid()
    root.mainloop()

    结果:

    blob.png

    分别测试鼠标的移动事件,只有当鼠标被按下后移动才回产生事件



    测试鼠标的释放(Relase)事件

    代码:

    import tkinter as tk
    root = tk.Tk()
    
    # 测试鼠标释放事件
    def printcoords(event):
        print(event.x, event.y)
    
    # 创建第一个 Button,并将它与左键释放事件绑定
    bt1 = tk.Button(root, text='leftmost button')
    bt1.bind('<ButtonRelease-1>', printcoords)
    
    # 创建第二个 Button,并将它与左键释放事件绑定
    bt2 = tk.Button(root, text='middle button')
    bt2.bind('<ButtonRelease-2>', printcoords)
    
    # 创建第三个 Button,并将它与左键释放事件绑定
    bt3 = tk.Button(root, text='rightmost button')
    bt3.bind('<ButtonRelease-3>', printcoords)
    
    
    bt1.grid()
    bt2.grid()
    bt3.grid()
    root.mainloop()

    结果:

    blob.png

    分别测试鼠标的 Relase 事件,只有当鼠标被 Relase 后移动才回产生 Relase 事件



    进入(Enter)事件

    测试鼠标释放事件

    代码:

    import tkinter as tk
    root = tk.Tk()
    def printcoords(event):
        print(event.x, event.y)
    
    # 创建第一个 Button,并将它与 Enter 事件绑定
    bt1 = tk.Button(root, text='leftmost button')
    bt1.bind('<Enter>', printcoords)
    
    bt1.grid()
    root.mainloop()

    结果:

    blob.png

关键字