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

相关文章

  • pycharm创建scrapy项目教程及遇到的坑解析

    pycharm创建scrapy项目教程及遇到的坑解析

    这篇文章主要介绍了pycharm创建scrapy项目教程及遇到的坑解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python学习笔记基本数据结构之序列类型list tuple range用法分析

    Python学习笔记基本数据结构之序列类型list tuple range用法分析

    这篇文章主要介绍了Python学习笔记基本数据结构之序列类型list tuple range用法,结合具体实例形式分析了Python序列类型list tuple range基本概念、定义与使用技巧,需要的朋友可以参考下
    2019-06-06
  • Python中max函数用于二维列表的实例

    Python中max函数用于二维列表的实例

    下面小编就为大家分享一篇Python中max函数用于二维列表的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python进制转换与反汇编实现流程介绍

    Python进制转换与反汇编实现流程介绍

    这篇文章主要介绍了Python进制转换与反汇编的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • django 实现简单的插入视频

    django 实现简单的插入视频

    这篇文章主要介绍了django 实现简单的插入视频,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 浅析python中的分片与截断序列

    浅析python中的分片与截断序列

    这篇文章主要介绍python对序列的分片方法。通过分片规则可以很简单的处理一些复杂的for循环操作。很有借鉴价值,有需要的可以一起参考学习。
    2016-08-08
  • python中常用的九个语法技巧

    python中常用的九个语法技巧

    大家好,本篇文章主要讲的是python中常用的九个语法技巧,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 利用Python字符画生成甜心教主

    利用Python字符画生成甜心教主

    字符画是一系列字符的组合,我们可以把字符看作是比较大块的像素,一个字符能表现一种颜色,字符的种类越多,可以表现的颜色也越多,图片也会更有层次感。 本文将利用Python字符画绘制一个甜心教主王心凌,需要的可以参考一下
    2022-05-05
  • python 如何快速复制序列

    python 如何快速复制序列

    这篇文章主要介绍了python 如何快速复制序列,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-09-09
  • From CSV to SQLite3 by python 导入csv到sqlite实例

    From CSV to SQLite3 by python 导入csv到sqlite实例

    今天小编就为大家分享一篇From CSV to SQLite3 by python 导入csv到sqlite实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02

最新评论