• 《tkinter实用教程三》ttk.Button 控件


    本教程是博主个人心血,未经允许不可引用,引用必举报,举报必封号。

    《tkinter实用教程一》Linux 环境下安装tkinter

    《tkinter实用教程二》tkinter 子模块 ttk

    《tkinter实用教程三》tkinter Button 控件

    《tkinter实用教程四》tkinter 布局管理 Grid

    《tkinter实用教程五》tkinter ttk.Frame控件

    tkinter ttk.Button 控件

    本文主要介绍 tkinterttk.Button 控件的简单用法和可选参数列表。

    如何在顶层窗口中创建一个 ttk.Button

    如下代码在顶层窗口 root 中创建了一个名为 btn 的按钮。

    from tkinter import *
    from tkinter import ttk
    
    root = Tk()
    btn = ttk.Button(root,text="第一个按钮") #创建一个按钮,并放置在root中
    btn.pack() # 放置按钮
    
    root.mainloop() 
    

    以上代码执行完毕后,会弹出如下图所示窗口。

    btn_01.png

    按钮中的文字由参数 text 指定。

    除了参数 text 之外,在创建一个 Button 时,还可以指定多种参数值,文章末尾会全部列出。

    现在,我们只讨论常用几个参数。

    如何指定 ttk.Button 样式

    Button 的3D样式由参数 relief 指定,如下代码创建了一个红色字体,蓝色背景的凸出按钮:

    from tkinter import *
    from tkinter import ttk
    
    root = Tk()
    style_default = ttk.Style()
    style_default.theme_use('classic')
    style_default.configure("TButton",foreground="red",background="blue",relief=RAISED)
    
    btn = ttk.Button(root,text="第二个按钮")
    btn.pack()
    
    root.mainloop()
    

    relief 参数使用传入的 RAISED 值,会创建一个如下图所示的,和 “第一个按钮” 截然不同的凸出按钮:

    btn_02.png

    SUNKEN 同样有意思的值还有很多,都列在下面啦,一个个去尝试吧!

    • RAISED='raised'
    • SUNKEN='sunken'
    • FLAT='flat'
    • RIDGE='ridge'
    • GROOVE='groove'
    • SOLID = 'solid'

    除了按钮的3D样式之外,我们常用的参数还有宽和高(widthheight)。

    如何制定按钮的大小

    按钮宽度由参数 width 指定,以下代码创建了一个宽度为17个字符的按钮:

    from tkinter import *
    from tkinter import ttk
    
    root = Tk()
    style = ttk.Style()
    style.configure("TButton",width=17)
    btn = ttk.Button(text="abcdefg",style='TButton')
    btn.pack()
    
    root.mainloop()
    

    代码执行结果,如下图所示:

    btn_03.png

    ttk.Button 控件和 tkinter 原生按钮不同,不具备 height 参数,具体原因目前还不清楚,还在学习过程中。

    按钮的宽以字符数量来确定的,如果是图像按钮则是以像素为单位的,不要忘了哦!!

    以上代码还能写成如下形式:

    from tkinter import *
    from tkinter import ttk
    root = Tk()
    btn = ttk.Button(root,text="abcdefg",width=17)
    btn.pack()
    
    root.mainloop()
    

    这种方式只对 width 参数有用,其他样式参数还是要使用 Style 传入!!

    如何更改 ttk 控件样式

    按钮绑定点击事件是通过 command 进行的,相信读到这里,你已经知道如何做了。

    如果我们希望在点击按钮之后,按钮的背景颜色由红色变为蓝色,那么代码按照下面的方式写:

    import tkinter
    from tkinter import ttk
    
    def click():
        btn['style']='C.TButton'
    
    root = tkinter.Tk()
    s1 = ttk.Style()
    s2 = ttk.Style()
    s1.configure("TButton",background='red')
    s2.configure("C.TButton",background="blue")
    
    btn = ttk.Button(text='btn',command=click)
    btn.pack()
    root.mainloop()
    

    以上代码创建了一个具有红色背景的按钮,并给 command 参数传入了一个函数
    在函数里改变了按钮的颜色。
    执行结果如下:

    点击之前

    btn_05_1.png

    点击之后

    btn_05_2.png

    ttk 背景颜色并没有完全覆盖整个按钮,这是和主题风格有关的,如果有感兴趣的朋友,可以留言。

    所有可选参数表

    以下是 tkinter 原生按钮的所有参数及其介绍:

    参数 描述
    activebackground 按钮在光标下时的背景颜色
    activebackground 按钮在光标下时的前景颜色
    anchor 文本在按钮上的位置。 例如,anchor=tk.NE 会将文本放置在按钮的右上角
    bd 或者 borderwidth 按钮外部的边框宽度,默认是两个像素
    bg 或者 background 正常状态下的背景色
    bitmap 要在按钮上显示的标准位图之一的名称(而不是文本)。
    command 单击按钮时要调用的函数或方法。
    cursor 选择当鼠标悬停在按钮上时显示的光标
    default tk.NORMAL 是默认值; 如果按钮最初被禁用(变灰,对鼠标点击无响应),请使用 tk.DISABLED
    disabledforeground 禁用按钮时使用的前景色
    fg 或者 foreground 正常的前景色(文本)颜色
    font 用于按钮的文本字体
    height 以文本行(对于文本按钮)或像素(对于图像)为单位的按钮高度
    highlightbackground 按钮有焦点时的高亮背景色
    highlightcolor 控件有焦点时焦点高亮的颜色
    highlightthickness 焦点高光的厚度
    image 展示在按钮上的图片(而不是文字)
    justify 如何显示多行文本: tk.LEFT 左对齐每一行;tk.CENTER 将它们居中; 或 tk.RIGHT 右对齐
    overrelief 鼠标在按钮上时使用的浮雕样式; 默认样式是 tk.RAISED
    padx 文本左侧和右侧的附加填充
    pady 文本上侧和下册的附加填充
    relief 指定按钮的浮雕类型。默认浮雕tk.RAISED
    repeatdelay 请参阅下面的repeatinterval
    repeatinterval 通常,当用户释放鼠标按钮时,按钮只会触发一次。如果您希望按钮在按住鼠标按钮时按固定间隔触发,请将此选项设置为要在重复之间使用的毫秒数,并将 repeatdelay 设置为在开始重复之前等待的毫秒数。例如,如果您指定“ repeatdelay=500, repeatinterval=100”按钮将在半秒后触发,此后每十分之一秒触发一次,直到用户释放鼠标按钮。 如果用户没有按住鼠标按钮至少 repeatdelay 毫秒,按钮将正常触发。
    state 将此选项设置为 tk.DISABLED 以使按钮变灰并使其无响应。 当鼠标悬停在其上方时,其值为 tk.ACTIVE。 默认值为 tk.NORMAL
    takefocus 通常,键盘焦点会访问按钮,空格字符的作用与鼠标单击相同,“按下”按钮。 您可以将 takefocus 选项设置为零以防止焦点访问按钮
    text 按钮上显示的文本。 使用内部换行符显示多个文本行
    textvariable 与此按钮上的文本相关联的 StringVar() 实例。 如果变量更改,新值将显示在按钮上
    underline 默认值为 -1,这意味着按钮上的文本字符将不带有下划线。 如果非负,相应的文本字符将被划线。 例如,underline=1 将在按钮文本的第二个字符下划线。
    width 以字母(如果显示文本)或像素(如果显示图像)为单位的按钮宽度
    wraplength 如果此值设置为正数,文本行将被换行以适应此长度

    《tkinter实用教程一》Linux 环境下安装tkinter

    《tkinter实用教程二》tkinter 子模块 ttk

    《tkinter实用教程三》tkinter Button 控件

    《tkinter实用教程四》tkinter 布局管理 Grid

    《tkinter实用教程五》tkinter ttk.Frame控件

    我的个人博客 Ahoh(www.ahoh.club),找我一起玩耍吧!!
  • 相关阅读:
    CODEFORCES-CONTEST653-D. Delivery Bears
    CodeForces 1244C-exgcd?
    洛谷P3948
    L2-010 排座位 (25 分) (最短路)
    L2-008 最长对称子串 (25 分) (模拟)
    L2-007 家庭房产 (25 分) (并查集)
    L2-005 集合相似度 (25 分) (STL——set)
    L2-002 链表去重 (25 分) (模拟)
    L2-001 紧急救援 (25 分) (最短路+路径打印)
    hiho 1098 最小生成树二·Kruscal算法 (最小生成树)
  • 原文地址:https://www.cnblogs.com/weidawang/p/15419105.html
Copyright © 2020-2023  润新知