Python tkinter中四个常用按钮的用法总结

 更新时间:2023年09月13日 09:04:43   作者:微小冷  
tkinter中有四个控件被冠以Button之名,分别是:Button, Checkbutton, Radiobutton, Menubutton,下面小编就来和大家聊聊它们的具体用法,感兴趣的可以学习一下

四大按钮

tkinter中有四个控件被冠以Button之名,分别是:Button, Checkbutton, Radiobutton, Menubutton,但后三种其实说不上是按钮,Checkbutton是单选框;Radiobutton其实更类似于Combobox;Menubutton则是菜单。

这几种按钮虽然功能各异,但都具有下面这些属性,这些属性属于非常通用的属性,并且在控件样式中也以Button为例,展示过了,本文就不再赘述。既然以四大按钮为题,那么就要稍微有点深度,展示一些此前不曾展示过的高级功能。

属性说明
background/bg背景色
borderwidth/bd边框宽度
foreground/fg前景色
state状态
font字体
width, height宽度,高度
padx,pady水平外间距,垂直外间距
text显示文本
justify多行文本对齐方式
relief边框样式
underline下划线
wraplength换行宽度

Button连击

Button可通过repeatdelay和repeatinterval来控制连击操作。

正常情况下,只有按下鼠标然后再抬起,才算是一次点击事件。而tkinter中点击的逻辑则是,如果按下按钮不松手,那么等待repeatdelay时间后,每隔repeatinterval就算是一次点击。

下面写代码测试一下

import tkinter as tk
root = tk.Tk()
v = tk.StringVar()
iClick = 0
v.set(f"点击{iClick}次")
def click():
    global iClick
    iClick += 1
    v.set(f"点击{iClick}次")
tk.Button(root, height=3, width=15,
    font = ('黑体', 60, 'bold'), command=click,    
    repeatdelay=1000, repeatinterval=300,
    textvariable=v).pack(side=tk.TOP, fill=tk.BOTH)
root.mainloop()

其含义是,每点击一次,iClick就加一,而按钮自身的设置是,如果按下按钮1000毫秒不松手,那么接下来每隔300毫秒就算一次点击。效果如下

Menubutton

Menubutton的特色当然是设置菜单,所以想用Menubutton,前提是有一个菜单。而在设置菜单过程中,可通过direction属性,来设置菜单位置。如果不设置direction,菜单会出现在按钮的下方,下面将direction设置为另外三个方向

import tkinter as tk
root = tk.Tk()
root.geometry("400x200")
def setMenu(root, mb, text):
    m = tk.Menu(mb)
    for i in range(3):
        m.add_command(label=f"{text}{i}")
    m.add_separator()
    m.add_command(label="退出", command=root.quit)
    return m
frm = tk.Frame(root)
frm.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
for d in ["above", "left", "right"]:
    mb = tk.Menubutton(frm, text=d, direction=d)
    mb.pack(side=tk.LEFT)
    m = setMenu(root, mb, d)
    mb.config(menu=m)
root.mainloop()

效果如下

Checkbutton

Checkbutton和不同Button相比是多了一个可供勾选的功能,与此同时也就具备了选中和未选中两种状态。这两种状态默认是1和0,但在Checkbutton中,可通过offvalue和onvalue来设置未选中和已经选中的值。

而绑定Checkbutton的选中状态的参数是variable。

root = tk.Tk()
root.geometry("400x200")
frm = tk.Frame(root)
frm.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
v = tk.StringVar()
font = ('黑体', 20, 'bold')
Checkbutton(frm, text="单选框", font=font, variable=v, 
    offvalue="未选中", onvalue="选中了").pack(side=tk.LEFT)
tk.Label(frm, font=font, textvariable=v).pack(side=tk.LEFT)
root.mainloop()

效果如下

Radiobutton

Radiobutton可以看成是无法同时选中的多个Checkbutton,所以也通过variable来作为关联变量,作为当前被选中的值。但由于有多个值,所以也就没有类似offvalue和onvalue这样的参数了。

root = tk.Tk()
v = StringVar(1)
frm = tk.Frame(root)
frm.place(relx=0.5, rely=0.3, anchor=tk.CENTER)
font = ('黑体', 20, 'bold')
for i in range(4):
    Radiobutton(root, text=f"Radio{i}", font=font,
        variable=v, value=i).pack(side=tk.LEFT)
frm = tk.Frame(root)
frm.place(relx=0.5, rely=0.7, anchor=tk.CENTER)
tk.Label(frm, font=font, textvariable=v).pack(side=tk.TOP)
root.mainloop()

结果如下

到此这篇关于Python tkinter中四个常用按钮的用法总结的文章就介绍到这了,更多相关Python tkinter按钮内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Flask-Cache缓存实现给Flask提速的方法详解

    使用Flask-Cache缓存实现给Flask提速的方法详解

    这篇文章主要介绍了使用Flask-Cache缓存实现给Flask提速的方法,结合实例形式详细分析了Flask-Cache的安装、配置及缓存使用相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • Python contextlib模块使用示例

    Python contextlib模块使用示例

    这篇文章主要介绍了Python contextlib模块使用示例,本文着重使用contextlib模块产生一个上下文管理器,需要的朋友可以参考下
    2015-02-02
  • Python爬虫之爬取哔哩哔哩热门视频排行榜

    Python爬虫之爬取哔哩哔哩热门视频排行榜

    这篇文章主要介绍了Python爬虫之爬取哔哩哔哩热门视频排行榜,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Python处理大量Excel文件的十个技巧分享

    Python处理大量Excel文件的十个技巧分享

    每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可以参考下
    2025-05-05
  • 如何从PyTorch中获取过程特征图实例详解

    如何从PyTorch中获取过程特征图实例详解

    特征提取是图像处理过程中常需要用到的一种方法,其效果好坏对模型的泛化能力有至关重要的影响,下面这篇文章主要给大家介绍了关于如何从PyTorch中获取过程特征图的相关资料,需要的朋友可以参考下
    2023-01-01
  • Python与Java进行交互操作的方法与性能对比

    Python与Java进行交互操作的方法与性能对比

    这篇文章主要为大家详细介绍了Python与Java进行交互操作的相关方法,包括子进程调用,JPype,Py4J和REST/gRPC,并进行了性能对比,感兴趣的小伙伴可以了解下
    2025-04-04
  • 30秒学会30个超实用Python代码片段【收藏版】

    30秒学会30个超实用Python代码片段【收藏版】

    许多人在数据科学、机器学习、web开发、脚本编写和自动化等领域中都会使用Python,它是一种十分流行的语言。本文将简要介绍30个简短的、且能在30秒内掌握的代码片段,感兴趣的朋友一起看看吧
    2019-10-10
  • matplotlib交互式数据光标mpldatacursor的实现

    matplotlib交互式数据光标mpldatacursor的实现

    这篇文章主要介绍了matplotlib交互式数据光标mpldatacursor的实现 ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • python实现文件名批量替换和内容替换

    python实现文件名批量替换和内容替换

    这篇文章主要介绍了python实现文件名批量替换和内容替换,第一个例子可以指定文件类型,需要的朋友可以参考下
    2014-03-03
  • Django路由层如何获取正确的url

    Django路由层如何获取正确的url

    本文介绍路由层是如何进行路由匹配的,以diango1.x版本为例,文中通过示例代码介绍的非常详细,文中通过示例代码介绍的非常详细,
    2021-07-07

最新评论