使用到的库
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
创建按钮
b1=ttk.Button(root, text="按钮", bootstyle=SUCCESS)
将按钮添加到窗口
b1.pack(side=LEFT, padx=5, pady=10)
完整代码
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = ttk.Window(title="按钮讲解")
#创建按钮
b1 = ttk.Button(root, text="按钮", bootstyle=SUCCESS)
#将按钮组件添加到窗口
b1.pack(side=LEFT, padx=5, pady=10)
root.mainloop()
运行效果
button的参数及示例
一般情况下button函数的定义如下
class Button(
master: Misc | None = None,
*,
class_: str = ...,
command: _ButtonCommand = ...,
compound: _TtkCompound = ...,
cursor: _Cursor = ...,
default: Literal['normal', 'active', 'disabled'] = ...,
image: _ImageSpec = ...,
name: str = ...,
padding: ... = ...,
state: str = ...,
style: str = ...,
takefocus: _TakeFocusValue = ...,
text: float | str = ...,
textvariable: Variable = ...,
underline: int = ...,
width: int | Literal[''] = ...
)
而比较常用的又是以下这些
button = ttk.Button(
master,
text="按钮",
command=my_function,
width=10,
style="SUCCESS",
cursor="arrow",
state="normal",
image="ico.ico"
)
参数释义
- master: 指定按钮所属的父级窗口或框架对象。
- text: 指定按钮上显示的文本内容。
- command: 指定按钮被点击时触发的函数或方法。当按钮被点击时,该函数将被调用。
- width: 指定按钮的宽度(以字符为单位),用于控制按钮的大小。
- style: 指定按钮的样式,可以选择预定义的样式,如 “TButton”, “TCheckbutton”, “TRadiobutton” 等,也可以指定自定义样式。
- cursor: 指定光标在按钮上时的外观样式,例如 “arrow”, “hand2”, “crosshair” 等。
- state: 指定按钮的状态,可选值有 “normal”(默认)和 “disabled”。如果设置为 “disabled”,按钮将变为禁用状态,不可点击
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = ttk.Window()
ttk.Button(root, text="按钮1", bootstyle=SUCCESS).pack(
side=LEFT, padx=5, pady=10)
ttk.Button(root, text="按钮2", bootstyle=(
INFO, OUTLINE)).pack(side=LEFT, padx=5, pady=10)
ttk.Button(root, text="按钮3", bootstyle=(
PRIMARY, "outline-toolbutton")).pack(side=LEFT, padx=5, pady=10)
ttk.Button(root, text="按钮4", bootstyle="link").pack(
side=LEFT, padx=5, pady=10)
ttk.Button(root, text="按钮5",
bootstyle="success-link").pack(side=LEFT, padx=5, pady=10)
ttk.Button(root, text="按钮6", state="disabled").pack(
side=LEFT, padx=5, pady=10) # 在禁用状态下创建按钮
root.mainloop()
外框按钮
这种风格的特点是具有纤细的轮廓。当 鼠标悬浮 或 按下 时, 按钮变为类似于默认按钮样式的纯色。当小部件被聚焦时,按钮内会出现一个虚线环。
# default outline style
Button(bootstyle="outline")
# success outline style
Button(bootstyle="success-outline")
示例代码
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = ttk.Window()
ttk.Button(root, text="按钮1", bootstyle="success-outline").pack(
side=LEFT, padx=5, pady=10)
ttk.Button(root, text="按钮2", bootstyle=(
INFO, OUTLINE)).pack(side=LEFT, padx=5, pady=10)
root.mainloop()
按钮绑定的事件
按钮绑定事件的关键是
command: _ButtonCommand = ...,
这个参数,按钮需要和执行的函数进行绑定,即当这个按钮被点击时这个相对应的事件函数就会被执行
示例代码
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = ttk.Window()
def H():
print("CTF")
ttk.Button(root, text="按钮1", bootstyle="success-outline",command=H).pack(
side=LEFT, padx=5, pady=10)
root.mainloop()
运行效果
鼠标左右键的点击
同一个按钮可以同时绑定两个,不过要确定是左右键,在space里
代表鼠标左键、鼠标右键
示例代码
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = ttk.Window()
# 为按钮添加点击事件
def button1(event): # 这里要加一个参数,不然会报错
print("鼠标左键点击了一下!")
button_text = event.widget["text"] # 得到按钮上的文本
print(button_text)
def button2(event): # 这里要加一个参数,不然会报错
print("鼠标右键点击了一下!")
button_text = event.widget["text"] # 得到按钮上的文本
print(button_text)
b = ttk.Button(root, text="Button", bootstyle=(PRIMARY, "outline-toolbutton"))
b.pack(side=LEFT, padx=5, pady=10)
b.bind("<Button-1>", button1) # <Button-1>鼠标左键
b.bind("<Button-3>", button2) # <Button-3>鼠标右键
root.mainloop()
运行效果
关于按钮居中的问题
定义一个名为 center_button 的函数,并将其绑定到 事件上。每当窗口大小发生变化时,该函数将被调用。在函数内部,通过获取窗口和按钮的宽度和高度,计算出按钮居中的坐标,并使用 place() 方法将按钮放置在窗口的中心位置。
运行效果