当前位置:   article > 正文

tkinter之事件和绑定_tkinter bind函数

tkinter bind函数

1.Widget的command参数

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

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

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()                                                                     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

点击前

点击后

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

widget.bind(event, handler)
  • 1

上述绑定语法中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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14


3. 取消绑定

语法格式:

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

例如: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()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

当按下‘X’时,跳出MessageBox

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


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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/761024
推荐阅读
相关标签
  

闽ICP备14008679号