Python GUI编程实战--Tkinter组件详解:Entry
Radiobutton控件
Radiobutton(单选按钮):组件用于实现多选一的问题。Radiobutton 组件可以包含文本或图像,每一个按钮都可以与一个 Python 的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。
Radiobutton 组件仅能显示单一字体的文本,但文本可以跨越多行。另外,还可以为其中的个别字符加上下划线(例如用于表示键盘快捷键)。默认情况下,tab 按键被用于在按钮间切换。
每一组Radiobutton 组件应该只与一个变量相关联,然后每一个按钮表示该变量的单一值。
何时使用 Radiobutton 组件?
Radiobutton 组件是用于实现多选一的问题,它几乎总是成组地被使用,其中所有成员共用相同的变量。
用法
Radiobutton 组件跟 Checkbutton 组件非常相似,为了实现其“单选”行为,确保一组中的所有按钮的variable 选项都使用同一个变量,并使用 value 选项来指定每个按钮代表什么值:
参数
Radiobutton(master=None, **options) (class)
master – 父组件
**options – 组件选项
下面详细列举了各个选项的具体含义和用法:
activebackground
- 设置当 Radiobutton 处于活动状态(通过 state 选项设置状态)的背景色
- 默认值由系统指定
activeforeground
- 设置当 Radiobutton 处于活动状态(通过 state 选项设置状态)的前景色
- 默认值由系统指定
anchor
- 控制文本(或图像)在 Radiobutton 中显示的位置
- N, NE, E, SE, S, SW, W, NW, 或 CENTER 来定位(EWSN代表东西南北,上北下南左西右东)
- 默认值是 CENTER
background <==>bg
- 设置背景颜色
- 默认值由系统指定
bitmap
- 指定显示到 Radiobutton 上的位图
- 如果指定了 image 选项,则该选项被忽略
borderwidth <==>db
- 指定 Radiobutton 的边框宽度
- 默认值由系统指定,通常是 1 或 2 像素
command
- 指定于该按钮相关联的函数或方法
- 当按钮被按下时由 Tkinter 自动调用对应的函数或方法
- 如果不设置此选项,那么该按钮被按下后啥事儿也不会发生
compound
- 控制 Radiobutton 中文本和图像的混合模式
- 默认情况下,如果有指定位图或图片,则不显示文本
- 如果该选项设置为 CENTER,文本显示在图像上(文本重叠图像)
- 如果该选项设置为 BOTTOM,LEFT,RIGHT 或 TOP,那么图像显示在文本的旁边(如 BOTTOM,则图像在文本的下方)
- 默认值是 NONE
cursor
- 指定当鼠标在 Radiobutton 上飘过的时候的鼠标样式
- 默认值由系统指定
disabledforeground
- 指定当 Radiobutton 不可用的时候前景色的颜色
- 默认值由系统指定
font
- 指定 Radiobutton 中文本的字体
- 一个 Radiobutton 只能设置一种字体
- 默认值由系统指定
foreground <==>fg
- 设置 Radiobutton 的文本和位图的颜色
- 默认值由系统指定
height
- 设置 Radiobutton 的高度
- 如果 Radiobutton 显示的是文本,那么单位是文本单元
- 如果 Radiobutton 显示的是图像,那么单位是像素(或屏幕单元)
- 如果设置为 0 或者干脆不设置,那么会自动根据 Radiobutton 的内容计算出高度
highlightbackground
- 指定当 Radiobutton 没有获得焦点的时候高亮边框的颜色
- 默认值由系统指定,通常是标准背景颜色
highlightcolor
- 指定当 Radiobutton 获得焦点的时候高亮边框的颜色
- 默认值由系统指定
highlightthickness
- 指定高亮边框的宽度
- 默认值由系统指定,通常是 1 或 2 像素
image
- 指定 Radiobutton 显示的图片
- 该值应该是 PhotoImage,BitmapImage,或者能兼容的对象
- 该选项优先于 text 和 bitmap 选项
indicatoron
- 指定前边作为选择的小圆圈是否绘制
- 默认是绘制的
- 该选项会影响到按钮的样式,如果设置为 False,则点击后该按钮变成 SUNKEN(凹陷),再次点击变为 RAISED(凸起)
justify
- 定义如何对齐多行文本
- 使用 LEFT,RIGHT 或 CENTER
- 注意,文本的位置取决于 anchor 选项
- 默认值是 CENTER
padx
- 指定 Radiobutton 水平方向上的额外间距(内容和边框间)
- 默认值是 1
pady
- 指定 Radiobutton 垂直方向上的额外间距(内容和边框间)
- 默认值是 1
relief
- 指定边框样式
- 可以设置 SUNKEN,RAISED,GROOVE,RIDGE 或 FLAT
- 如果 indicatoron 选项设置为 True,则默认值是 FLAT,否则为 RAISED
selectcolor
- 选择框的颜色
- 默认值由系统指定
selectimage
- 设置当 Radiobutton 为选中状态的时候显示的图片
- 如果没有指定 image 选项,该选项被忽略
state
- 指定 Radiobutton 的状态
- 默认值是 NORMAL
- 另外你还可以设置 ACTIVE 或 DISABLED
takefocus
- 如果是 True,该组件接受输入焦点(用户可以通过 tab 键将焦点转移上来)
- 默认值是 False
text
- 指定 Radiobutton 显示的文本
- 文本可以包含换行符
- 如果设置了 bitmap 或 image 选项,该选项则被忽略
textvariable
- Radiobutton 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容
- 如果变量被修改,Radiobutton 的文本会自动更新
underline
- 跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键)
- 默认值是 -1
- 例如设置为 1,则说明在 Radiobutton 的第 2 个字符处画下划线
value
- 标志该单选按钮的值
- 在同一组中的所有按钮应该拥有各不相同的值
- 通过将该值与 variable 选项的值对比,即可判断用户选中了哪个按钮
variable
- 与 Radiobutton 组件关联的变量
- 同一组中的所有按钮的 variable 选项应该都指向同一个变量
- 通过将该变量与 value 选项的值对比,即可判断用户选中了哪个按钮
width
- 设置 Radiobutton 的宽度
- 如果 Radiobutton 显示的是文本,那么单位是文本单元
- 如果 Radiobutton 显示的是图像,那么单位是像素(或屏幕单元)
- 如果设置为 0 或者干脆不设置,那么会自动根据 Radiobutton 的内容计算出宽度
wraplength
- 决定 Radiobutton 的文本应该被分成多少行
- 该选项指定每行的长度,单位是屏幕单元
- 默认值是 0
常用方法:
deselect():-- 取消该按钮的选中状态。
flash():
– 刷新 Radiobutton 组件,该方法将重绘Radiobutton 组件若干次(在 ACTIVE 和NORMAL 状态间切换)。
– 该方法在调试的时候很有用,也可以使用此方法提醒用户**了该按钮。
invoke():
– 调用 Radiobutton 中 command 选项指定的函数或方法,并返回函数的返回值。
– 如果 Radiobutton 的状态是 DISABLED(不可用)或没有指定 command 选项,则该方法无效。
select():-- 将 Radiobutton 组件设置为选中状态。
实战内容:
1.创建三个RadioButton,实现简单的选择按钮
from tkinter import *
window = Tk()
window.title("My Window")
window.geometry('200x180')
var = StringVar()
lb = Label(window, bg='yellow',width=20,
text='empty')
lb.pack()
def print_selection():
lb.config(text='You have selected ' + var.get())
# 创建RadioButton按钮
rb1 = Radiobutton(window, text='Option A',
variable= var, value='A', command=print_selection)
rb1.pack()
rb2 = Radiobutton(window, text='Option B',
variable= var, value='B', command=print_selection)
rb2.pack()
rb3 = Radiobutton(window, text='Option C',
variable= var, value='C', command=print_selection)
rb3.pack()
window.mainloop()
2.制作三个选项框,通过选项框改变窗体背景颜色
import tkinter as tk
window = tk.Tk()
window.title("Python GUI")
window.geometry('200x180')
# 定义几个颜色的全局变量
COLOR1 = "Blue"
COLOR2 = "Gold"
COLOR3 = "Red"
# 单选按钮回调函数,就是当单选按钮被点击会执行该函数
def radCall():
radSel = radVar.get()
if radSel == 1:
# 设置整个界面的背景颜色
window.configure(background=COLOR1)
elif radSel == 2:
window.configure(background=COLOR2)
elif radSel == 3:
window.configure(background=COLOR3)
# 通过tk.IntVar() 获取单选按钮value参数对应的值
radVar = tk.IntVar()
# 当该单选按钮被点击时,会触发参数command对应的函数
rad1 = tk.Radiobutton(window, text=COLOR1, variable=radVar,
value=1, command=radCall)
# 参数sticky对应的值参考复选框的解释
rad1.grid(column=0, row=5, sticky=tk.W)
rad2 = tk.Radiobutton(window, text=COLOR2, variable=radVar,
value=2, command=radCall)
rad2.grid(column=1, row=5, sticky=tk.W)
rad3 = tk.Radiobutton(window, text=COLOR3, variable=radVar,
value=3, command=radCall)
rad3.grid(column=2, row=5, sticky=tk.W)
window.mainloop()