Tkinter Radiobutton教程

Tkinter Radiobutton教程

Radiobutton名称的由来是无线电的按钮,在收音机时代可以用无线电的按钮选择特定频道。选项按钮最大的特色是可以用鼠标单击方式选取此选项,同时一次只能有一个选项被选取,例如,在填写学历时,会看到一系列选项,例如,高中、大学、硕士、博士,此时只能勾选一个项目。在设计选项按钮时,最常见的方式是让选项按钮以文字方式存在,与标签一样我们也可以设计含图像的选项按钮。

程序设计时可以设计让选项按钮与函数(或称方法)绑在一起,当选择适当的选项按钮时,可以自动执行相关的函数或方法。另外,程序设计时可能会有多组选项按钮,此时可以设计一组选项按钮有一个相关的变量,用此变量绑定这组选项按钮。

这时可以使用Radiobutton( )方法建立上述系列选项按钮,语法格式如下。

Radiobutton(master, options, ...)

Radiobutton()方法的第一个参数是父对象,表示这个选项按钮将建立在哪一个父对象内。

下列是Radiobutton()方法内其他常用的options参数。

(1)activebackground:鼠标光标在选项按钮上时的背景颜色。

(2)activeforeground:鼠标光标在选项按钮上时的前景颜色。

(3)anchor:如果空间大于所需时,控制选项按钮的位置,默认是CENTER。

(4)bg:标签背景或indicator的背景颜色。

(5)bitmap:位图图像对象。

(6)borderwidth or bd:边界宽度默认是两个像素。

(7)command:当用户更改选项时,会自动执行此函数。

(8)cursor:当鼠标光标在选项按钮上时的光标形状。

(9)fg:文字前景颜色。

(10)font:字形。

(11)height:选项按钮上的文字有几行,默认是1行。

(12)highlightbackground:当选项按钮取得焦点时的背景颜色。

(13)highlightcolor:当选项按钮取得焦点时的颜色。

(14)image:图像对象,如果要建立含图像的选项按钮时,可以使用此参数。

(15)indicatoron:当此值为0时,可以建立盒子选项按钮。

(16)justify:当含多行文字时,最后一行文字的对齐方式。

(17)padx:默认是1,可设置选项按钮与文字的间隔。

(18)pady:默认是1,可设置选项按钮的上下间距。

(19)selectcolor:当选项按钮被选取时的颜色。

(20)selectimage:如果设置图像选项按钮时,可由此设置当选项按钮被选取时的不同图像。

(21)state:默认是state=NORMAL,若是设置DISABLE则以灰阶显示选项按钮表示暂时无法使用。

(22)text:选项按钮旁的文字。

(23)textvariable:以变量方式显示选项按钮文字。

(24)underline:可以设置第几个文字有下画线,从0开始算起,默认是-1,表示无下画线。

(25)value:选项按钮的值,可以区分所选取的选项按钮。

(26)variable:设置或取得目前选取的单选按钮,它的值类型通常是IntVar或StringVar。

(27)width:选项按钮的文字有几个字符宽,省略时会自行调整为实际宽度。

(28)wraplength:限制每行的文字数,默认是0,表示只有“\n”才会换行。

绑定整组选项按钮的方式如下。

var IntVar
rb1 = Radiobutton(root, ..., variable=var, value=x1, ...)
rb2 = Radiobutton(root, ..., variable=var, value=x2, ...)
...
rbn = Radiobutton(root, ..., variable=var, value=x3, ...)

未来若是想取得这组选项按钮所选的选项,可以使用get( )方法,这时会将所选选项的参数value的值传回,方法set( )可以设置最初默认的value选项。

Tkinter Radiobutton教程 示例1

这是一个简单的选项按钮的应用,程序刚执行时默认选项是“男生”,此时窗口上方显示尚未选择,然后可以选择“男生”或“女生”,选择完成后可以显示“你是男生”或“你是女生”。

from tkinter import *

def printSelection():
    num = var.get()
    if num == 1:
        label.config(text="You are a boy")
    else:
        label.config(text="You are a girl")

root = Tk()
root.title("apidemos.com")    # 设置窗口标题

var = IntVar()         # 选项按钮绑定的变量
var.set(1)             # 默认选项是男生
# var.set(0)           # 可以设置初始不默认任何选项 
label = Label(root,text="这是预设,尚未选择",bg="lightyellow",width=30)
label.pack()

rbman = Radiobutton(root,text="Boy",                  # 男生选项按钮
                    variable=var,value=1,              # value用来区分所选择的选项按钮 
                    command=printSelection)            # 女生选项按钮
rbman.pack()
rbwoman = Radiobutton(root,text="Girl",
                    variable=var,value=2,
                    command=printSelection)
rbwoman.pack()

root.mainloop()

Output:

Tkinter Radiobutton教程

上述第13行是设置var变量是IntVar( )对象,也是整型。第14行是设置默认选项是1,在此相当于默认是男生,第16和17行是设置标签信息。第19~22行是创建“男生”选项按钮,第23~26行是创建“女生”选项按钮。当有单选按钮新建时,会执行第3~8行的函数,这个函数会由var.get( )获得目前选项按钮的value值,然后由此值利用if判断所选的是男生或女生,最后使用config( )方法将男生或女生设置给标签对象label的text,所以可以看到所选的结果。

上述程序中是为了让读者了解get( )和set( )方法取得和设置的var值是参数value的值,在熟悉了选项按钮的操作后,这个字段可以用字符串处理,通常是设置text内容与value内容相同,这时在处理callback函数(此例中是printSelection)时,可以比较清晰易懂,整个程序也可以比较简洁。

Tkinter Radiobutton教程 示例2

使用字符串设置Radiobutton方法内的value参数值,重新设计ch7_1.py。读者会发现printSelection( )函数只用第4行就取代了原先的第4~8行。

from tkinter import *
def printSelection():
    label.config(text="You are "+var.get())

root = Tk()
root.title("apidemos.com")    # 设置窗口标题

var = StringVar()         # 选项按钮绑定的变量
var.set("Boy")             # 默认选项是男生
# var.set("Birth")             # 默认选项是空
# var.set(0)           # 可以设置初始不默认任何选项 
label = Label(root,text="This is a preset, not yet selected",bg="lightyellow",width=30)
label.pack()

rbman = Radiobutton(root,text="Boy-Tom",                  # 男生选项按钮
                    variable=var,value="Boy",              # value用来区分所选择的选项按钮 
                    command=printSelection)            # 女生选项按钮
rbman.pack()
rbwoman = Radiobutton(root,text="Girl-Lucy",
                    variable=var,value="Girl",
                    command=printSelection)
rbwoman.pack()

root.mainloop()

Output:

Tkinter Radiobutton教程

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程