Tkinter系列:
- GUI初步💎布局💎绑定变量💎绑定事件💎消息框
- 扫雷小游戏💎强行表白神器
控件和人通过事件来交互,Tkinter
中则通过Bind
来绑定事件。例如
import tkinter as tk
root = tk.Tk()
txt = tk.StringVar()
btn = tk.Button(root, textvariable=txt, width=30, height=5)
btn.pack()
btn.bind("<Button-1>", lambda evt: txt.set("我被左键点了"))
btn.bind("<Button-3>", lambda evt: txt.set("我被右键点了"))
root.mainloop()
效果如下
其中,bind
用于绑定事件,第一个参数<Button-1>
在鼠标左键点击时触发,后面的lambda
表达式为触发后的函数,txt.set()
用于设置StringVar
的字符串。
鼠标点击事件
在tkinter
中,提供了四种鼠标点击动作,分别表示单击、双击、点击时移动以及松开鼠标,如下表所示。
标志 | 动作 | 备注 |
---|---|---|
鼠标单击事件 | 可用数字1-5 | |
双击鼠标 | 可用数字1-3 | |
鼠标移动 | 可用数字1-3 | |
松开鼠标 | 可用数字1-3 |
下面具体解释备注栏种所谓的可用数字。
每个动作针对左键、中键(滚轮)和右键提供了不同的动作,左键、中键和右键分别对应1,2,3
,以左键为例,其动作分别如下
标志 | 动作 | 备注 |
---|---|---|
<Button-1> |
单击鼠标左键 | |
<Double-Button-1> |
双击鼠标左键 | |
<B1-Motion> |
移动鼠标左键 | |
<ButtonRelease-1> |
松开鼠标鼠标 |
此外,<Button-4>
表示滚轮上滑,<Button-5>
表示滚轮下滑。
进入或离开控件
当鼠标进入某个控件时,会触发动作Enter
;离开这个控件时会触发<Leave>
。
当键盘的光标进入某个控件时,会触发<FocusIn>
;当键盘光标离开某个控件时,会触发<FocusOut>
。
键盘事件
键盘事件的统一标记是<Key>
,示例如下
import tkinter as tk
root = tk.Tk()
txt = tk.StringVar()
txt.set("按键盘")
lbl = tk.Label(root, textvariable=txt, width=30, height=5)
lbl.focus_set()
lbl.pack()
def keyBack(evt):
msg = f"您点击了{evt.char}, ASCII代码{evt.keycode}\n"
msg += f"按键名称{evt.keysym}, 代码{evt.keysym_num}"
txt.set(msg)
lbl.bind("<Key>", keyBack)
root.mainloop()
效果为
通过keycode
和keysym_num
的区别,可以更加精确地捕捉键盘事件。
如果想设置快捷键,则可直接在<>
中括上想要捕捉的按键,如果为多个按键,不同按键之间通过-
连接,例如<Ctrl-C>
表示按下Ctrl
+C
时触发事件。
除了常规的字母按键之外,还有几个特殊按键,如下表所示
代码 | 说明 |
---|---|
<Shift_L> |
左shift键 |
<Shift_R> |
右shift键 |
<F2> |
F2键,Fxx以此类推 |
<Return> |
回车 |
<BackSpace> |
退格删除键 |
Configure事件
<Configure>
事件将在窗口或控件尺寸、位置发生变化时触发,
import tkinter as tk
def testCall(evt):
print("窗口变了")
root = tk.Tk()
root.geometry('400x300+450+300')
root.bind('<Configure>', testCall)
root.mainloop()
效果为文章来源:https://www.toymoban.com/news/detail-501928.html
文章来源地址https://www.toymoban.com/news/detail-501928.html
到了这里,关于tkinter如何绑定鼠标和键盘等事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!