使用到的库

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()

运行效果
按钮组件精讲-LMLPHP

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()

按钮组件精讲-LMLPHP

外框按钮

这种风格的特点是具有纤细的轮廓。当 鼠标悬浮按下 时, 按钮变为类似于默认按钮样式的纯色。当小部件被聚焦时,按钮内会出现一个虚线环。

# 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()

按钮组件精讲-LMLPHP按钮组件精讲-LMLPHP

按钮绑定的事件

按钮绑定事件的关键是

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()

运行效果
按钮组件精讲-LMLPHP

鼠标左右键的点击

同一个按钮可以同时绑定两个,不过要确定是左右键,在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()

运行效果
按钮组件精讲-LMLPHP

关于按钮居中的问题

定义一个名为 center_button 的函数,并将其绑定到 事件上。每当窗口大小发生变化时,该函数将被调用。在函数内部,通过获取窗口和按钮的宽度和高度,计算出按钮居中的坐标,并使用 place() 方法将按钮放置在窗口的中心位置。
运行效果
按钮组件精讲-LMLPHP

07-03 13:24