时间:2020-07-27 python教程 查看: 1134
本文实例讲述了Python GUI编程学习笔记之tkinter事件绑定操作。分享给大家供大家参考,具体如下:
首发时间:2018-03-04 19:26
from tkinter import *
root=Tk()
def prt():
print("hello")
def func1(*args,**kwargs):
print(*args,**kwargs)
hello_btn=Button(root,text="hello",command=prt)#演示
hello_btn.pack()
args_btn=Button(root,text="获知是否button事件默认有参数",command=func1)#获知是否有参数,结果是没有
args_btn.pack()
btn1=Button(root,text="传输参数",command=lambda:func1("running"))#强制传输参数
btn1.pack()
root.mainloop()
from tkinter import *
root=Tk()
root.geometry("200x200")
text=Text(root)
text.pack()
def func(event):
print(event)
def func_release(event):
print("release")
#单击
# text.bind("<Button-1>",func)
# root.bind("<Button-1>",func)
#双击
# text.bind("<Double-Button-1>",func)
# 鼠标释放
# text.bind("<ButtonRelease-1>",func_release)
#鼠标移入
# text.bind("<Enter>",func)
#鼠标按住移动事件
# text.bind("<B1-Motion>",func)
#键盘按下事件
# text.bind("<Key>",func)
#键位绑定事件
# def func3(event):
# print("你按下了回车!")
# text.bind("<Return>",func3)
#实现的一个拖拽功能
def func4(event):
# print(event)
x=str(event.x_root)
y=str(event.y_root)
root.geometry("200x200+"+x+"+"+y)
text.bind("<B1-Motion>",func4)
root.mainloop()
补充:如果想要传参,可以使用lambda:
text.bind("<Button-1>",lambda event:func(event,"hello"))
from tkinter import *
import tkinter.messagebox
root=Tk()
root.geometry("200x200")
def func1():
if tkinter.messagebox.askyesno("关闭窗口","确认关闭窗口吗"):
root.destroy()
root.protocol("WM_DELETE_WINDOW",func1)
root.mainloop()
想要了解更多,可以参考tkinter的官方文档:http://effbot.org/tkinterbook/
希望本文所述对大家Python程序设计有所帮助。