《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控件


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM