Python 3 – Tkinter 单选按钮(Radiobutton)
在Tkinter中,单选按钮(Radiobutton)是一种特殊类型的tkinter组件,允许用户从一组相互排斥的选项中选择一个。在本文中,我们将学习如何在Python 3中使用Tkinter创建单选按钮。
Tkinter 单选按钮控件说明
单选按钮控件(Radiobutton)允许用户在一组可选项中选择一个。它们与Checkbuttons类似,但它们没有同时选择多个选项的能力。相反,单选按钮组中的每个单选按钮都是相互排斥的,用户只能选择一个。
使用单选按钮控件时,您可以将每个单选按钮关联到回调函数。每当用户选择单选按钮时,关联的回调函数将会自动执行。
在Tkinter中使用单选按钮控件有两种方式。一种是使用tkinter.Radiobutton构造函数,另一种是使用Radiobutton类的实例对象。
在Python 3 中创建单选按钮
以下代码演示了如何使用tkinter Radiobutton类在Python 3中创建单选按钮控件:
import tkinter as tk
root = tk.Tk()
# 创建一个 Tkinter 控件
# Label控件
tk.Label(root, text="选择您最喜欢的编程语言:", justify=tk.LEFT, padx=20).pack()
# Radiobutton 控件(单选按钮)
v = tk.IntVar()
# 使用Radiobutton类的实例对象向root窗口添加单选按钮控件
tk.Radiobutton(root, text="Python", padx=20, variable=v, value=1).pack(anchor=tk.W)
tk.Radiobutton(root, text="Java", padx=20, variable=v, value=2).pack(anchor=tk.W)
tk.Radiobutton(root, text="C++", padx=20, variable=v, value=3).pack(anchor=tk.W)
tk.Radiobutton(root, text="PHP", padx=20, variable=v, value=4).pack(anchor=tk.W)
root.mainloop()
在此代码中,我们创建一个包含四个单选按钮的单选按钮组。以Python为例,我们使用Radiobutton类的实例对象创建单选按钮,并将单选按钮控制的变量(v)设置为1(即选择第一个单选按钮)。
Tkinter 单选按钮填充
您可以使用padx和pady参数来设置单选按钮控件周围的填充
tk.Radiobutton(root, text="Python", padx=20, variable=v, value=1).pack(anchor=tk.W)
tk.Radiobutton(root, text="Java", padx=20, variable=v, value=2).pack(anchor=tk.W)
tk.Radiobutton(root, text="C++", padx=20, variable=v, value=3).pack(anchor=tk.W)
tk.Radiobutton(root, text="PHP", padx=20, variable=v, value=4).pack(anchor=tk.W)
在上面的代码中,框架将为每个单选按钮设置水平填充为20像素。
此外,您也可以使用ipadx和ipady参数来设置单选按钮控件内部组件的填充。
tk.Radiobutton(root, text="Python", padx=20, variable=v, value=1, ipady=5).pack(anchor=tk.W)
tk.Radiobutton(root, text="Java", padx=20, variable=v, value=2, ipady=5).pack(anchor=tk.W)
tk.Radiobutton(root, text="C++", padx=20, variable=v, value=3, ipady=5).pack(anchor=tk.W)
tk.Radiobutton(root, text="PHP", padx=20, variable=v, value=4, ipady=5).pack(anchor=tk.W)
在上面的代码中,我们使用了ipady参数来设置每个单选按钮的内部元素(文本)的垂直填充为5像素。
Tkinter 单选按钮布局
在上面的代码中,我们将所有的单选按钮都放置在左侧方向,紧贴文本。Tkinter的pack()布局管理器会自动处理单选按钮的位置和大小,从而让它们排列成水平列表。
如果您想要使用其他布局管理器,单选按钮控件也可以应用于grid()和place()。
tk.Radiobutton(root, text="Python", padx=20, variable=v, value=1).grid(row=0, column=0)
tk.Radiobutton(root, text="Java", padx=20, variable=v, value=2).grid(row=1, column=0)
tk.Radiobutton(root, text="C++", padx=20, variable=v, value=3).grid(row=2, column=0)
tk.Radiobutton(root, text="PHP", padx=20, variable=v, value=4).grid(row=3, column=0)
上面的代码使用grid()方法让单选按钮在不同的行和列中更好地可调整大小和位置。
如果您想要使用place()布局管理器,可以通过设置相应的坐标来调整单选按钮的位置和大小。
Tkinter 单选按钮命令回调函数
在前面的示例代码中,我们创建了一个单选按钮单元组,并将单选按钮控制的变量与整数变量v关联。我们通过设置value参数来设置每个单选按钮控件的值,例如“1”、“2”、“3”和“4”。
我们还将v变量绑定到名称为printValue()的回调函数。这个函数将在用户选择一个单选按钮时执行,并将应用程序控制台中选择的单选按钮的值打印出来。
import tkinter as tk
root = tk.Tk()
# 创建一个 Tkinter 控件
# Label控件
tk.Label(root, text="选择您最喜欢的编程语言:", justify=tk.LEFT, padx=20).pack()
# Radiobutton 控件(单选按钮)
v = tk.IntVar()
# 使用Radiobutton类的实例对象向root窗口添加单选按钮控件和命令回调函数printValue
tk.Radiobutton(root, text="Python", padx=20, variable=v, value=1, command=lambda: printValue(v.get())).pack(anchor=tk.W)
tk.Radiobutton(root, text="Java", padx=20, variable=v, value=2, command=lambda: printValue(v.get())).pack(anchor=tk.W)
tk.Radiobutton(root, text="C++", padx=20, variable=v, value=3, command=lambda: printValue(v.get())).pack(anchor=tk.W)
tk.Radiobutton(root, text="PHP", padx=20, variable=v, value=4, command=lambda: printValue(v.get())).pack(anchor=tk.W)
def printValue(value):
print(value)
root.mainloop()
在上面的代码中,我们创建了一个回调函数printValue(),该函数在用户选择单选按钮时自动执行。此回调函数将选择的单选按钮的值作为输入参数,并在应用程序控制台中打印出该值。
在创建Radiobutton控件时,我们使用了command参数将printValue()回调函数绑定到控件上。每当用户选择单选按钮时,此回调函数都会自动执行。
结论
Tkinter单选按钮是一种非常有用的控件,它可以让用户从一组可选项中选择一个。本篇文章提供了创建Tkinter单选按钮的完整示例代码,并介绍了如何使用Radiobutton类、填充、布局和命令回调函数创建自定义单选按钮。在Tkinter应用程序中使用单选按钮可以改善用户体验,简化数据输入,并增强应用程序的可靠性。