python玄阶斗技--tkinter事件

        在前一篇文章中,我们已经了解是tkinter的一些标签的使用,但一个GUI程序除了让别人看到,还要有一些交互操作,实现人机交互的方法我们称为事件,通过事件分为:鼠标事件,键盘事件和窗口事件。接下来我们将对事件进行介绍,如果对tkinter标签还不了解的可以看看:tkinter

一.事件绑定方法

        在使用事件时,我们首先要将进行事件的标签和要发生的事件进行绑定,绑定事件的方法有三种:

1.bind(sequence,func,add)   :控件标签绑定

2.bind_class(className,sequence,func,add)   :类邦定

3.bind_all(sequence,func,add)   :将使用组件事件邦定到事件响应函数上

例如:

import tkinter as tk
import tkinter.messagebox
windows = tk.Tk()
windows.title('事件绑定')
windows.geometry('500x300')
button = tk.Button(windows, text='点击一下')
button.pack()
def func(event):
    tk.messagebox.showinfo(title='消息',message='点击了按扭!')

button.bind("<Button>",func)
windows.mainloop()

当我们点击按钮时,就会触发事件,跳出消息框 

  

二.鼠标事件

        在上面我们谈到的绑定事件方法中,参数sequence就表示事件,当将该参数换成鼠标事件时,就可以绑定鼠标事件,以下是鼠标的常用事件:

<Button-1>        按下鼠标左键

<Button-2>        按下鼠标中键

<Button-3>        按下鼠标右键

<ButtonRelease-1>        释放鼠标左键

<ButtonRelease-3>        释放鼠标右键

<Double-Button-1>        双击鼠标左键

<Double-Button-3>        双击鼠标右键

<Enter>        鼠标指针进入某一组件区域

<Leave>        鼠标指针离开某一组件区域

<MouseWheel>        鼠标滑轮滚动        

例如:

import tkinter as tk
import tkinter.messagebox
windows = tk.Tk()
windows.title('事件绑定')
windows.geometry('500x300')
button = tk.Button(windows, text='点击一下',bg='green')
button1 = tk.Button(windows,text='双击一下')
button2 = tk.Button(windows,text='移入鼠标')
button.pack()
button1.pack()
button2.pack()
def func1(event):
    tk.messagebox.showinfo(title='消息',message='点击了按扭!')
def func2(event):
    tk.messagebox.showinfo(title='消息', message='双击了按扭!')
def func3(event):
    tk.messagebox.showwarning(title='警告',message='鼠标移入!')
button.bind("<Button>",func1)
button1.bind("<Double-Button-1>",func2)
button2.bind("<Enter>",func3)
windows.mainloop()

我们实现了鼠标的点击,双击和移入的事件

三.键盘事件

        键盘事件有:

<Key>        所有按键

<KeyPress-A>        按下A键,字母可以所以替换

<Alt-KeyPress-A>        同时按下Alt和A键,可以随意组合

<Double-KeyPress-A>        双击A键,字母A可以随意替换

注:当我们使用键盘事件时,首先要用focus_set()方法将键盘的焦点设置到一个组件上

例如:

import tkinter as tk
windows = tk.Tk()
windows.title('事件绑定')
windows.geometry('500x300')
text = tk.StringVar()
text.set('按键盘')
label = tk.Label(windows,textvariable=text,width=30,height=20)
label.focus_set()   # 设置焦点
label.pack()
def func1(event):
    msg = f'点击了{event.char}'
    text.set(msg)

label.bind('<Key>',func1)
windows.mainloop()

当我们运行代码,按下什么按键就在窗口显示我们按的键

 

四.窗口事件

        窗口事件有:

Activate        控件由不可用转为可用

Configure        控件大小改变时触发

Deactivate        当控件由可用转为不可用时触发

Destroy        当控件被销毁时触发

Expose        当控件从被遮挡状态中暴露出来时触发

FocusOut        当控件失去焦点时触发

FocusIn        当控件获得焦点时触发

Map        当控件由隐藏状态转为显示状态时触发

Property        当窗体的属性被删除或改变时触发

Unmap        当控件由显示状态转为隐藏状态时触发

Visibility        当控件变为可视状态时触发

例如:

import tkinter.messagebox
import tkinter as tk
windows = tk.Tk()
windows.title('事件绑定')
windows.geometry('500x300')
text = tk.StringVar()
text.set('改变窗口大小')
label = tk.Label(windows,textvariable=text,width=30,height=20)
label.focus_set()   # 设置焦点
label.pack()
def func1(event):
   tk.messagebox.showinfo(title='消息',message='窗口大小改变')

label.bind('<Configure>',func1)
windows.mainloop()

当窗口大小改变时弹出消息框: 

猜你喜欢

转载自blog.csdn.net/weixin_63009369/article/details/130032540