美文网首页
GUI中绑定事件

GUI中绑定事件

作者: Chaweys | 来源:发表于2021-01-12 21:11 被阅读0次

    鼠标事件:
    <Button-1>或<ButtonPress-1>或<1>   鼠标左键按下。2表示中键,3 表示右键
    <ButtonRelease-1>                  鼠标左键释放
    <B1-Motion>                        按住鼠标左键移动
    <Double-Button-1>                  双击左键 
    <Enter>                            鼠标指针进入某一组件区域 
    <Leave>                            鼠标指针离开某一组件区域
    <MouseWheel>                       滚动滚轮
    
    键盘事件:
    <KeyPress-a>         按下 a 键,a 可用其他键替代 
    <KeyRelease-a>       释放 a 键
    <KeyPress-A>         按下 A 键(大写的 A)
    <Alt-KeyPress-a>     同时按下 alt 和 a;alt 可用 ctrl 和 shift 替代 
    <Double-KeyPress-a>  快速按两下 a 
    <Control-V>          CTRL 和 V 键被同时按下,V 可以换成其它键位
    
    
    event 对象常用属性:
    char           按键字符,仅对键盘事件有效 
    keycode        按键编码,仅对键盘事件有效
    keysym         按键名称,仅对键盘事件有效
    num            鼠标按键,仅对鼠标事件有效
    type           所触发的事件类型 
    widget         引起事件的组件 
    width,height   组件改变后的大小,仅 Configure 有效
    x,y           鼠标当前位置,相对于父容器
    x_root,y_root  鼠标当前位置,相对于整个屏幕
    
    #coding=utf-8
    from tkinter import *
    
    root=Tk()
    root.title("绑定事件处理")
    root.geometry("530x300+300+300")
    
    c1=Canvas(root,width=200,height=200,bg="green")
    c1.pack()
    
    def mouseTest(event):
        print("鼠标左键单击位置相对于父组件:x={0} y={1}".format(event.x,event.y))
        print("鼠标左键单击位置相对于整个屏幕:x_root={0} y_root={1}".format(event.x_root,event.y_root))
        print("触发的事件类型为:",event.type)
        print("触发事件的组件为:",event.widget)
    
    
    def testDrag(event):
        c1.create_oval(event.x,event.y,event.x+1,event.y+1)
    
    
    def testkeybord(event):
        print("按键字符:{0},按键编码:{1},按键名称:{2}"\
              .format(event.char,event.keycode,event.keysym))
    
    def press_a_test(event):
        print("press b")
    
    def release_a_test(event):
        print("release b")
    
    #绑定鼠标左键单击
    c1.bind("<Button-1>",mouseTest)
    
    #绑定鼠标左键移动
    c1.bind("<B1-Motion>",testDrag)
    
    
    #绑定键盘任意键
    root.bind("<KeyPress>",testkeybord)
    
    #绑定b键:当绑定了具体的按键,会覆盖绑定的任意键效果
    root.bind("<KeyPress-b>",press_a_test)
    
    #释放b键
    root.bind("<KeyRelease-b>",release_a_test)
    
    root.mainloop()
    
    单击画布的效果.png
    鼠标拖动的效果.png
    任意键盘效果.png
    键盘具体按键.png

    相关文章

      网友评论

          本文标题:GUI中绑定事件

          本文链接:https://www.haomeiwen.com/subject/iyqlaktx.html