tkinter之事件和绑定

1.Widget的command参数

功能按钮(Button)、数值滚动条(Scale)等。其实这就是一个Widget的事件绑定的概念,当按钮事件发生、当数值滚动条值改变……就可以通过command=callback,设计callback函数,这个callback函数就是事件处理程序。

Button(tk, text="button", command=函数名)

2.事件绑定

from tkinter import *

def buttonClicked(event):
    label.config(text="Button Clicked")


tk = Tk()
tk.title("tk")

button = Button(tk, text="鼠标左键点击触发")
button.pack()
button.bind("<Button-1>", buttonClicked)  # <Button-1>是触发事件(鼠标左键点击按钮),buttonClicked是事件处理程序

label = Label(tk)
label.pack()

tk.mainloop()                                                                     

点击前

点击后

事件绑定的语法格式如下:

widget.bind(event, handler)

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

其中鼠标相关的事件如下:

键盘相关的事件如下:


控件相关事件如下:

鼠标事件的基本应用,这个程序在执行时会建立300×180大小的窗口,当单击鼠标左键时,在Python Shell窗口中会列出单击事件时的坐标。

from tkinter import *

def callback(event):
    print(event.x, event.y)


tk = Tk()
tk.title("tk")

frame = Frame(tk, width=300, height=180)
frame.bind("<Button-1>", callback)
frame.pack()

tk.mainloop()


3. 取消绑定

语法格式:

obj.unbind("<...>")

例如:button.unbind("<Button-1>"):取消鼠标左键触发按钮

4.Protocols

Protocols可以翻译为通信协议,在tkinter内可以解释为窗口管理程序(Windows Manager)与应用程序(Application)之间的通信协议。tkinter也支持使用绑定概念更改此通信协议。

程序实例:单击通信协议(Protocols)内容窗口右上角的[插图]按钮可以关闭窗口,它的名称是WM_DELETE_WINDOW。这个程序会修改此协议,改为单击此按钮后增加Messagebox,询问“结束或取消”,若是单击“确定”按钮才会结束此程序。

from tkinter import *
from tkinter import messagebox

def callback():
    res = messagebox.askokcancel("OKCANCEL","结束或取消?")
    if res == True:
        tk.destory()
    else:
        return


tk = Tk()
tk.protocol("WM_DELETE_WINDOW", callback)

tk.mainloop()

当按下‘X’时,跳出MessageBox

5. 一个事件绑定多个事件处理程序


程序先执行bind()绑定的程序,然后再执行Button( )内command指定的程序。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值