赞
踩
功能按钮(Button)、数值滚动条(Scale)等。其实这就是一个Widget的事件绑定的概念,当按钮事件发生、当数值滚动条值改变……就可以通过command=callback,设计callback函数,这个callback函数就是事件处理程序。
Button(tk, text="button", command=函数名)
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()
语法格式:
obj.unbind("<...>")
例如:button.unbind("<Button-1>")
:取消鼠标左键触发按钮
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
程序先执行bind()绑定的程序,然后再执行Button( )内command指定的程序。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。