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按钮内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详细介绍Ruby中的正则表达式

    详细介绍Ruby中的正则表达式

    这篇文章主要介绍了详细介绍Ruby中的正则表达式,文章中还给出了用于搜索和替换的正则表达式的使用实例,需要的朋友可以参考下
    2015-04-04
  • 使用 Django 进行测试驱动开发

    使用 Django 进行测试驱动开发

    本文分享了什么是测试驱动开发,并用测试驱动开发的方式 创建了一个简单的 Django 应用程序,感兴趣的可以了解一下
    2021-11-11
  • ubuntu环境下python虚拟环境的安装过程

    ubuntu环境下python虚拟环境的安装过程

    这篇文章主要介绍了ubuntu环境下python虚拟环境的安装搭建过程 ,需要的朋友可以参考下
    2018-01-01
  • python基于TCP实现的文件下载器功能案例

    python基于TCP实现的文件下载器功能案例

    这篇文章主要介绍了python基于TCP实现的文件下载器功能,结合具体实例形式分析了Python使用socket模块实现的tcp协议下载功能客户端与服务器端相关操作技巧,需要的朋友可以参考下
    2019-12-12
  • 对numpy的array和python中自带的list之间相互转化详解

    对numpy的array和python中自带的list之间相互转化详解

    下面小编就为大家分享一篇对numpy的array和python中自带的list之间相互转化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 使用Python Fast API发布API服务的过程详解

    使用Python Fast API发布API服务的过程详解

    这篇文章主要介绍了使用Python Fast API发布API服务,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • python 实现将Numpy数组保存为图像

    python 实现将Numpy数组保存为图像

    今天小编就为大家分享一篇python 实现将Numpy数组保存为图像,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python 通过视频url获取视频的宽高方式

    python 通过视频url获取视频的宽高方式

    今天小编就为大家分享一篇python 通过视频url获取视频的宽高方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 面向初学者的Python编辑器Mu

    面向初学者的Python编辑器Mu

    今天小编就为大家分享一篇关于一个面向初学者的Python编辑器Mu,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Python字符串格式化输出代码实例

    Python字符串格式化输出代码实例

    这篇文章主要介绍了Python字符串格式化输出代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论