美文网首页
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