用tkinter可将用户事件与自定义函数绑定,用键盘或鼠标的动作事件来响应触发自定义函数的执行。其通式为:
控件实例.bind(<事件代码>,<函数名>)
其中,事件代码通常以半角小于号“<”和大于号“>”界定,包括事件和按键等2~3个部分,它们之间用减号分隔。常用事件代码如下:
例如,将框架控件实例frame绑定鼠标右键单击事件,调用自定义函数myfunc()可表示为"frame.bind('<Button-3>,myfunc')"。注意:myfunc后面没有()。
将控件实例绑定到键盘事件和部分光标位置不落在具体控件实例上的鼠标事件时,还需要设置该实例执行focus_set()方法获得焦点,才能对事件持续响应。例如frame.focus_set()。
所调用的自定义函数若需要利用鼠标或键盘的响应值,可将event作为参数,通过event的属性获取。event属性如下:
将标签绑定在键盘任意键触发事件并获取焦点,并将按键字符显示在标签上:
from tkinter import *
def show(event):
s = event.keysym
lb.config(text=s)
window = Tk()
window.title('按键学习')
window.geometry('200x200')
lb = Label(window, text='请按键', font=('黑体', 48))
lb.bind('<Key>', show)
lb.focus_set()
lb.pack()
window.mainloop()
将窗体绑定鼠标单击事件,并将鼠标触发点在窗体上的位置显示在标签上:
from tkinter import *
def show(event):
s = '光标位于x=%s,y=%s' % (str(event.x), str(event.y))
lb.config(text=s)
window = Tk()
window.title('鼠标学习')
window.geometry('200x200')
lb = Label(window, text='请单击窗体')
lb.pack()
window.bind('<Button-1>', show)
window.focus_set()
window.mainloop()