Tkinter 事件绑定

Tkinter 事件绑定

在tkinter应用程序中最后一个指令是mainloop( ),这个方法是让程序进入事件等待循环,除了如11-1节的Widget控件状态改变可以调用相对应的事件处理程序外,tkinter也提供了为事件绑定处理程序的机制。它的语法格式如下。

widget.bind(event,handler)

上述绑定语法中widget是事件的来源,可以是root窗口对象,或是任意的Widget控件,例如,功能按钮、选项按钮、复选框……handler是事件处理程序。

鼠标相关的事件如下表所示。

Tkinter 事件绑定

键盘相关的事件如下表所示。

Tkinter 事件绑定

控件相关事件如下表所示。

Tkinter 事件绑定

了解了以上事件绑定后,其实我们已经可以试着学习自我设计事件绑定处理程序,同时将事件处理程序与一般事件绑在一起。我们从先前的学习中可以知道,单击功能按钮时可以执行某个动作,所使用的是在Button( )内增加command参数,然后单击功能按钮时让程序执行command所指定的方法。

其实设计功能按钮程序时,若是在Button( )内省略command参数,所产生的影响是单击功能按钮时没有动作。然后我们可以使用本节的知识重新让单击功能按钮有动作产生,假设功能按钮对象是btn,可以使用下列方式建立单击与事件的绑定。

btn.bind("<Button-1>", event handler)

示例

使用事件绑定方式让单击Click me按钮后可以列出“Button clicked”字符串。对这个程序而言,功能按钮就是bind( )方法的事件来源,所以第21行用btn.bind( )建立绑定工作。

from tkinter import *
def pythonClicked():          # Python复选框事件处理程序
    if varPython.get():
        lab.config(text="Select Python")
    else:
        lab.config(text="Unselect Python")
def javaClicked():          # Java复选框事件处理程序
    if varJava.get():
        lab.config(text="Select Java")
    else:
        lab.config(text="Unselect Java")
def buttonClicked(event):
    lab.config(text="Button clicked")

root = Tk()
root.title("apidemos.com")                 # 窗口标题    
root.geometry("300x180")             # 窗口宽300高180

btn = Button(root,text="Click Me")
btn.pack(anchor=W)
btn.bind("<Button-1>",buttonClicked) # 单击Click Me绑定buttonClicked方法

varPython = BooleanVar()
cbnPython = Checkbutton(root,text="Python",variable=varPython,
                        command=pythonClicked)
cbnPython.pack(anchor=W)
varJava = BooleanVar()
cbnJava = Checkbutton(root,text="Java",variable=varJava,
                        command=javaClicked)
cbnJava.pack(anchor=W)
lab = Label(root,bg="yellow",fg="blue",
            height=2,width=12,
            font="Times 16 bold")
lab.pack()

root.mainloop()

输出:

Tkinter 事件绑定

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程