python图形编程复选按钮和单选按钮详细说明_Python_tkinter_单选框(Radiobutton)与复选框(Checkbutton)...

单选框(Radiobutton)与复选框(Checkbutton)

thinter.Radiobutton(用于存放的父组件,属性参数...)

thinter.Checkbutton(用于存放的父组件,属性参数...)

具有以下属性

anchor

设置组件中文字的对其方式

background(bg)

指定组件的背景色。

borderwidth(bd)

指定组件边框的宽度。

bitmap

指定组件中的位图。

font

指定组件中文本的字体。

foreground(fg)

指定组件的前

height

指定组件的高度。

image

指定组件中的图片。

justify

指定组件中多行文本的对齐方式。

text

指定组件中的文本,可以使用“\n”表示换行。

value

指定组件被选中后(单选框)

onvalue

组件勾选状态值(复选框)

offvalue

组件取消勾选状态的值(复选框)

variable

指定组件所关联的变量。需要使用tkinter.IntVar()或者tkinter.StringVar()创建的值

width

指定组件的宽度。

command

设置复选框操作的触发命令(复选框)

indicatoron

缺省情况下为1,如果将这个属性改为0,则其外观是Sunken,表示按钮的弹起或按下两种状态

textvariable

通过回调函数修改按钮的值(复选框)

EG1:简单的单选框

# 创建单选框,单选框的内容是text,内容对应的值是value,g根据value选择

from tkinter import *

root = Tk()

radio1 = Radiobutton(root,text="选择1",value=True)

radio1.grid()

radio2 = Radiobutton(root,text="选择2",value=False)

radio2.grid()

radio3 = Radiobutton(root,text="选择3",value=False)

radio3.grid()

root.mainloop()

实行结果:

1247274bd3304609a54fad06f169b289.jpg

EG2:

# EG3:(Radiobutton)

from tkinter import *

root = Tk()

v = IntVar()

v.set(3) # 在下面的variable,和radiobutton进行绑定,set的值和radiobutton组件中value设置的值比较,相同的那组是默认值(那个黑点的位置),set的范围从0开始,如果set的值超出了下面for循环的范围,没有默认值

for i in range(4):

Radiobutton(root, variable=v, text="Radiobutton-{}".format(i), value=i).grid()

root.mainloop()

实行结果:

6e5899a1ad6d49b5b00f64a06f41c824.png

EG3:

# 补充,回调函数,重新设置数值

from tkinter import *

def callRadiobutton():

# 设置数值

v.set(1)

root = Tk()

v = IntVar()

# set函数是设置单选框中的初始值,set的参数和Radiobutton组件中的value比较,如果存在相同的情况,则为初始值

v.set(2)

# 三个单选框中都有相同的回调函数callRadiobutton,点击单选框后调用callRadiobutton,重新设置三个单选框的数值

Radiobutton(root, variable=v, text="Radiobutton-{}".format(1), value=1,command=callRadiobutton).grid()

Radiobutton(root, variable=v, text="Radiobutton-{}".format(1), value=2,command=callRadiobutton).grid()

Radiobutton(root, variable=v, text="Radiobutton-{}".format(1), value=3,command=callRadiobutton).grid()

root.mainloop()

实行结果:

b9262532378a423eb826d7b8e64aa7af.png

aa980159eed5461abc1b6a67bd23cfe5.png

EG4:

# 创建两个不同的组

from tkinter import *

root = Tk()

vlang = IntVar()

vos = IntVar()

vlang.set(1) # 第一个组初始值为1

vos.set(2) # 第一个组初始值为2

# 创建两个组,不同的组,各个按钮互不影响。

for i in [vlang, vos]:

for j in range(3):

Radiobutton(root, variable=i, text="Radiobutton_{}".format(j), value=j).grid()

root.mainloop()

实行结果:

3bd459deba6c4ccba62b58ad38319b9e.png

EG6:

# EG6:如果同一个组中的按钮使用相同的value,则这两个按钮的工作方式完全相同

from tkinter import *

root = Tk()

v = IntVar()

v.set(1)

#例子中共有4个alue为1的值,当选中其中的一个时,其他三个也会被选中;选中除了这四个只外的按钮时,四个按钮全部取消

for i in range(3):

Radiobutton(root, variable=v, text="Radiobutton_{}".format(i), value=1).grid()

for i in range(3):

Radiobutton(root, variable=v, text="Radiobutton_{}".format(i), value=i).grid()

root.mainloop()

实行结果:

3546f7e23a824888a8c4971fce5a8a8e.png

EG7:

# EG6:与Checkbutton类似,每个Radiobutton可以有自己的处理函数,每当点击按钮时,系统会调用相应的处理函数

from tkinter import *

root = Tk()

v = IntVar()

v.set(3)

def r1():

print('call r1')

def r2():

print('call r2')

def r3():

print('call r3')

def r4():

print('call r4')

j = 2

# 将四个函数的引用作为一个临时的列表,直接传给单选框组件中的command

# 注意虽然同时可以选中两个按钮,但每次点击按钮,执行的代码只有一次

for i in [r1, r2, r3, r4]:

Radiobutton(root, variable=v, text="Radiobutton", value=j, command=i).grid()

Radiobutton(root, variable=v, text="Radiobutton", value=j, command=i).grid()

j += 1

root.mainloop()

实行结果:

5750c0ab190b47c09e445780508cb3c0.png

EG8:

# 8.Radiobutton另一个比较实用的属性是indicatoron,缺省情况下为1,如果将这个属性改为0,则其外观是Sunken

# Radiobutton表示按钮的弹起或按下两种状态

from tkinter import *

root = Tk()

v = IntVar()

v.set(1)

for i in range(3):

Radiobutton(root, variable=v, text="Radiobutton", value=i, indicatoron=0).grid()

root.mainloop()

实行结果:

570b76c0885b49b8a15b14d9bdd0b28e.png

Checkbutton篇

EG1:

# Checkbutton又称为多选按钮,可以表示两种状态:On和Off,可以设置回调函数,每当点击此按钮时回调函数被调用

# 1.一个简单的Checkbutton例子

from tkinter import *

root = Tk()

Checkbutton(root, text="Checkbutton_1").grid()

Checkbutton(root, text="Checkbutton_2").grid()

Checkbutton(root, text="Checkbutton_3").grid()

root.mainloop()

实行结果:

1f7d1f268d6342f08ab1ace9c89ee0d3.png

EG2:

# 2.设置Checkbutton的回调函数

from tkinter import *

def call_Checkbutton_1():

print("call_Checkbutton_1")

def call_Checkbutton_2():

print("call_Checkbutton_2")

root = Tk()

# 只要是单击,都会触发调用对应的函数(不管Checkbutton的状态如何,此回调函数都会被调用)

Checkbutton(root, text="Checkbutton_1", command=call_Checkbutton_1).grid()

Checkbutton(root, text="Checkbutton_2", command=call_Checkbutton_2).grid()

root.mainloop()

实行结果:

93cd4f69495b4664b446386de51ec9fb.png

EG3:

# 3.通过回调函数改变Checkbutton的显示文本text的值

from tkinter import *

def callCheckbutton():

v.set("hello Checkbutton")

root = Tk()

v = StringVar()

v.set("Checkbutton")

# 绑定v到Checkbutton的属性textvariable

Checkbutton(root, text="Checkbutton", textvariable=v, command=callCheckbutton).grid()

root.mainloop()

实行结果:

672df9328c4040c5942e9f022a074f63.jpg

fa30b12f4a924ad6b6d94e6875544b54.jpg

EG4:

# 4.上述的textvariable使用方法与Button的用法完全相同,使用此例是为了区别Checkbutton的另外的一个属性variable,

# 此属性与textvariable不同,它是与这个控件本身绑定,Checkbutton自己有值:On和Off值,缺省状态On为1,Off为0,

# variable选中的时候的数值为1,否则为0(多选择时候,后台可以获得用户信息)

from tkinter import *

root = Tk()

v = IntVar()

a = StringVar

def callCheckbutton():

print(v.get())

Checkbutton(root, variable=v, text="Checkbutton", command=callCheckbutton).grid()

root.mainloop()

实行结果:

e3c1b14915c74834a1dae37b5c98cf96.jpg

EG5:

# 5.Checkbutton的值不仅仅是1或0,可以是其他类型的数值,可以通过onvalue和offvalue属性设置Checkbutton的状态值,

# 如下代码将On设置为'python',Off值设置为'Tkinter',程序的打印值将不再是0或1,而是'Tkinter’或‘python

from tkinter import *

root = Tk()

root.title("Checkbutton")

v = StringVar()

def callCheckbutton():

print(v.get())

Checkbutton(root, variable=v, text="text-Checkbutton", onvalue="onvalue", offvalue="offvalue",

command=callCheckbutton).grid()

root.mainloop()

实行结果:

1c5d9b2b3fcc4835856aa246f47f5565.jpg

dd264a2f4d864e74b6284fb9e8c911d6.jpg

d8e6fe66cb9148ccaa1aba04779660fe.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值