当我们单击的时候,它可以执⾏相应的功能。
上⽂说到,按钮可以执⾏相应的功能,这⾥的功能我们可以理解为⼀个函数,或者这些功能通过相应的函数去实现。
绑定⽅式通常有如下⼏种:第⼀种,在按钮组件被声明 的时候⽤ command 属性声明, command 属性接受⼀个函数名, 注意函数名不要加双引号。第⼆种,使⽤ bind⽅法,该⽅法是 Misc 这个类的⼀个⽅法,下⾯我们仔细讲解。
选项 | 含义 |
---|---|
activebackground | 1. 设置当 Button 处于活动状态(通过 state 选项设置状态)的背景色 ;2. 默认值由系统指定 |
activeforeground | 1. 设置当 Button 处于活动状态(通过 state 选项设置状态)的前景色 ;2. 默认值由系统指定 |
anchor | 1. 控制文本(或图像)在 Button 中显示的位置;2. "n", "ne", "e", "se", "s", "sw", "w", "nw", 或者 "center" 来定位(ewsn 代表东西南北,上北下南左西右东) ;3. 默认值是 "center" |
background | 1. 设置背景颜色; 2. 默认值由系统指定 |
bg | 跟 background 一样 |
bitmap | 1. 指定显示到 Button 上的位图 ;2. 如果指定了 image 选项,则该选项被忽略 |
borderwidth | 1. 指定 Button 的边框宽度 ;2. 默认值由系统指定,通常是 1 或 2 像素 |
bd | 跟 borderwidth 一样 |
compound | 1. 控制 Button 中文本和图像的混合模式; 2. 默认情况下,如果有指定位图或图片,则不显示文本 ;3.如果该选项设置为 "center",文本显示在图像上(文本重叠图像);4.如果该选项设置为 "bottom","left","right" 或 "top",那么图像显示在文本的旁边(如 "bottom",则图像在文本的下方);5.默认值是 NONE |
cursor | 1. 指定当鼠标在 Button 上飘过的时候的鼠标样式 ;2. 默认值由系统指定 |
default | 1. 如果设置该选项("normal"),该按钮会被绘制成默认按钮 ;2. Tkinter 会根据平台的具体指标来绘制(通常就是绘制一个额外的边框);3. 默认值是 "disable" |
disabledforeground | 1. 指定当 Button 不可用的时候前景色的颜色 ;2. 默认值由系统指定 |
font | 1. 指定 Button 中文本的字体 ;2. 一个 Button 只能设置一种字体 ;3. 默认值由系统指定 |
foreground | 1. 设置 Button 的文本和位图的颜色 ;2. 默认值由系统指定 |
fg | 跟 foreground 一样 |
height | 1. 设置 Button 的高度 ;2. 如果 Button 显示的是文本,那么单位是文本单元 ;3. 如果 Button 显示的是图像,那么单位是像素(或屏幕单元); 4. 如果设置为 0 或者干脆不设置,那么会自动根据 Button 的内容计算出高度 |
highlightbackground | 1. 指定当 Button 没有获得焦点的时候高亮边框的颜色 ;2. 默认值由系统指定 |
highlightcolor | 1. 指定当 Button 获得焦点的时候高亮边框的颜色 ;2. 默认值由系统指定 |
highlightthickness | 1. 指定高亮边框的宽度 ;2. 默认值是 0(不带高亮边框) |
image | 1. 指定 Button 显示的图片 ;2. 该值应该是 PhotoImage,BitmapImage,或者能兼容的对象 ;3. 该选项优先于 text 和 bitmap 选项 |
justify | 1. 定义如何对齐多行文本;2. 使用 "left","right" 或 "center"; 3. 注意,文本的位置取决于 anchor 选项 4. 默认值是 "center" |
overrelief | 1. 定义当鼠标飘过时 Button 的样式 ;2. 如果不设置,那么总是使用 relief 选项指定的样式 |
padx | 指定 Button 水平方向上的额外间距(内容和边框间) |
pady | 指定 Button 垂直方向上的额外间距(内容和边框间) |
relief | 1. 指定边框样式 ;2. 通常当按钮被按下时是 "sunken",其他时候是 "raised" ;3. 另外你还可以设置 "groove"、"ridge" 或 "flat" 4. 默认值是 "raised" |
repeatdelay | 见下方 repeatinterval 选项的描述 |
repeatinterval | 1. 通常当用户鼠标按下按钮并释放的时候系统认为是一次点击动作。如果你希望当用户持续按下按钮的时候(没有松开),根据一定的间隔多次触发按钮,那么你可以设置这个选项。;2.当用户持续按下按钮的时候,经过 repeatdelay 时间后,每 repeatinterval 间隔就触发一次按钮事件。;3.例如设置 repeatdelay=1000,repeatinterval=300,则当用户持续按下按钮,在 1 秒的延迟后开始每 300 毫秒触发一次按钮事件,直到用户释放鼠标。 |
state | 1. 指定 Button 的状态; 2. 默认值是 "normal" ;3. 另外你还可以设置 "active" 或 "disabled" |
takefocus | 1. 指定使用 Tab 键可以将焦点移到该 Button 组件上(这样按下空格键也相当于触发按钮事件) ;2. 默认是开启的,可以将该选项设置为 False 避免焦点在此 Button 上 |
text | 1. 指定 Button 显示的文本 ;2. 文本可以包含换行符 ;3. 如果设置了 bitmap 或 image 选项,该选项则被忽略 |
textvariable | 1. Button 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容 ;2. 如果变量被修改,Button 的文本会自动更新 |
underline | 1. 跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键) ;2. 默认值是 -1 3. 例如设置为 1,则说明在 Button 的第 2 个字符处画下划线 |
width | 1. 设置 Button 的宽度 ;2. 如果 Button 显示的是文本,那么单位是文本单元; 3. 如果 Button 显示的是图像,那么单位是像素(或屏幕单元) ;4. 如果设置为 0 或者干脆不设置,那么会自动根据 Button 的内容计算出宽度 |
wraplength | 1. 决定 Button 的文本应该被分成多少行 ;2. 该选项指定每行的长度,单位是屏幕单元 ;3. 默认值是 0 |
import tkinter as tk
root = tk.Tk()
def createLable():
lable = tk.Label(root,text='hello tkinter')
lable.pack()
btn = tk.Button(root,text='click me to create lable',command=createLable)
btn.pack()
root.mainloop()
bind 绑定不只可以绑定按钮,其他的控件包括主窗口都可以绑定
import tkinter as tk
root = tk.Tk()
# 此处函数,需要添加一个参数
def createLable(event):
lable = tk.Label(root,text='hello tkinter')
lable.pack()
btn = tk.Button(root,text='click me to create lable')
#此处进行绑定
btn.bind('<Button-1>',createLable)
btn.pack()
root.mainloop()
bind的第⼀个参数是⽤字符串包含的事件类型,它采⽤的描述⽅式是: <MODIFIER-TYPE-DETAIL>
MODIFIER,可以声明多个,例如<Control-Shift-Key-a>
就是Ctrl + Shift + a
modifier | 含义 |
---|---|
Alt | 按下Alt时候 |
Any | 表示任何类型的按键被按下的时候 |
Control | 按下Control的时候 |
Command | Mac 的 Command 键按下 |
Double | 表示后续两个事件被连续触发(如:<Double-Button-1> 为用户双击鼠标左键) |
Lock | 打开大写字母锁定键(CapsLock) |
Shift | 按下Shift时候 |
Triple | 跟Double类似,三连击 |
TYPE
type | 含义 |
---|---|
Configure | 组件尺寸发生变化触发 |
Deactivate | 组件状态从激活变为未激活 |
Destroy | 组件被摧毁触发 |
Enter | 当鼠标指针进入时候触发(不是按下回车) |
Expose | 当窗口或组件的某部分不再被覆盖的时候触发 |
FocusIn | 当组件获得焦点时触发(可以用focus_set使组件获得焦点) |
FousOut | 当组件失去焦点触发 |
KeyPress | 键盘,可以简写为Key,一般搭配DETAIL 使用,例如Key-a是键盘 a 键 |
KeyRelease | 释放键盘后的事件 |
Leave | 鼠标指针离开后触发 |
Map | 当组件被映射时候触发,意思是在应用程序中显示该组件的时候,如grid()方法 |
Motion | 鼠标在组件内移动触发事件 |
MouseWheel | 当鼠标滚轮滚动时触发(支持WIN和mac系统,Linux参考Button) |
Unmap | 当组件被取消映射时候触发,如grid_remove()方法时 |
Visibility | 当应用程序至少有一部分在屏幕中是可见的时候触发该事件 |
Button | 按下鼠标按键,一般搭配 DETAIL 使用,例如Button-1 是鼠标左键 |
ButtonRelease | 松开鼠标按键,用法同上 |
DETAIL,需要搭配 Type 使用
TYPE-DETAIL | 含义 |
---|---|
Button-1 | 按下鼠标左键 |
Button-2 | 按下鼠标中键 |
Button-3 | 按下鼠标右键 |
Button-4 | 滚轮上滑 |
Button-5 | 滚轮下滑 |
Event,当Tkinter去回调你定义的函数,都会带Event对象(作为参数)去调用,Event的属性如下:
属性 | 含义 |
---|---|
widget | 产生该事件的组件 |
x,y | 当前鼠标位置坐标(相对于窗口左上角,像素为单位) |
x_root,y_root | 同上 |
char | 按键对应字符(键盘事件专属) |
keysym | 按键名 |
keycode | 按键码 |
num | 按钮数字(鼠标事件专属) |
width,height | 组件的新尺寸(Configure事件专属) |
type | 该事件的类型 |