点击关注州的先生
编程实战、原创应用,不容错过
本文属于《先生的Tkinter教程》第5篇一、事件处理的重要性
能够对事件进行反应和处理是图形界面程序开发过程中最重要的任务之一,因为只有事件处理才能让一个图形界面程序拥有灵魂,否则,图形界面程序只是一副空皮囊,只能看不能用。
对PyQt熟悉的朋友应该知道,在QT中,事件的处理是通过信号槽来实现的。信号是事件的反映,槽函数则是对事件的处理。
在Tkinter中,某些部件类会通过command选项自动处理一些事件,比如Button按钮类中的command选项可以处理按钮点击时的事件。如下所示:
# coding:utf-8
# @文件: 5-1.py
# @创建者:州的先生
# 博客地址:zmister.com
# 主題:Button按鈕的最基礎事件處理
import tkinter as tk
class ButtonApp(tk.Tk):
def __init__(self):
super().__init__()
self.wm_title("州的先生zmister.com Tkinter教程")
button = tk.Button(
text="按鈕事件",
command = self.print_button
)
button.pack()
def print_button(self):
print("點擊了按鈕")
if __name__ == '__main__':
app = ButtonApp()
app.mainloop()
运行上述代码,我们会得到一个只要一个按钮的图形用户界面,点击按钮时,我们可以在控制台看到我们点击的操作,如下图所示:
这只是一些最原始的事件处理方法,如果需要更加复杂和高级的事件处理,那么就不能使用command选项来实现了。
面对更加复杂的事件处理,我们在Tkinter中使用部件类的bind()方法来实现。
二、bind方法的简单介绍
bind()方法用于在小部件上绑定一个事件到一个函数上。(类似于PyQt中连接一个信号到一个槽函数上)
下面是bind()方法在源码中的定义和说明:
def bind(self, sequence=None, func=None, add=None):
"""Bind to this widget at event SEQUENCE a call to function FUNC.
SEQUENCE is a string of concatenated event