欢迎光临
我们一起进阶

Python的GUI编程(六)RadioButton(单选)

扫码或搜索:沉默王二
发送 290992
即可立即永久解锁本站全部文章

Radio Buttons

  • 单选按钮是一种可在多个预先定义的选项中选择出一项的 Tkinter 控件. 单选按钮可显示文字或图片.

  • 显示文字时只能使用预设字体. 该控件可以绑定一个 Python 函数或方法, 当单选按钮被选择时, 该函数或方法将被调用. 

  • 单选按钮 (Radio Button) 这个名字来源于收音机 (Radio) 上的调频按钮, 这些按钮用来选择特定波段或预设电台. 如果一个按钮被按下, 其他同类的按钮就会弹起, 即同时只有一个按钮可被按下. 

  • 一组单选按钮控件和同一个变量关联. 点击其中一个单选按钮将把这个变量设为某个预定义的值.

修改上面的例子:

from Tkinter import *

root=Tk()
v=IntVar()
lis=['python','C++','C','Java']
def callCB():
    for i in range(4):
     if v.get()==i:
        root1 = Tk()
        Label(root1,text='你的选择是'+lis[i]+'!',fg='red',width=20,height=6).pack()
        Button(root1,text='确定',width=3,height=1,command=root1.destroy).pack(side='bottom')

Label(root,text='选择一门你喜欢的编程语言').pack(anchor=W)

radiobutton=Radiobutton(root,text=lis[0],value=0,command=callCB,variable=v)
radiobutton.pack(anchor=W)

radiobutton1=Radiobutton(root,text=lis[1],value=1,command=callCB,variable=v)
radiobutton1.pack(anchor=W)

radiobutton2=Radiobutton(root,text=lis[2],value=2,command=callCB,variable=v)
radiobutton2.pack(anchor=W)

radiobutton3=Radiobutton(root,text=lis[3],value=3,command=callCB,variable=v)
radiobutton3.pack(anchor=W)

root.mainloop()

上面代码冗长,简化如下:

from Tkinter import *

root=Tk()
v=IntVar()
#列表中存储的是元素是元组
language=[('python',0),('C++',1),('C',2),('Java',3)]
def callRB():
    for i in range(4):
     if v.get()==i:
        root1 = Tk()
        Label(root1,text='你的选择是'+language[i][0]+'!',fg='red',width=20,height=6).pack()
        Button(root1,text='确定',width=3,height=1,command=root1.destroy).pack(side='bottom')

Label(root,text='选择一门你喜欢的编程语言').pack(anchor=W)

#
for lan,num in language:
    Radiobutton(root, text=lan, value=num, command=callRB, variable=v).pack(anchor=W)

root.mainloop()

RadioButton默认的是空心圆形作为选项条目可以用一个文本框来展示选项.

将 indicatoron 选项设置为 0 即可达到该目的: 这表示单选按钮不会有额外的单选指示器. 

from Tkinter import *

root=Tk()
v=IntVar()
#列表中存储的是元素是元组
language=[('python',0),('C++',1),('C',2),('Java',3)]
def callRB():
    for i in range(4):
     if v.get()==i:
        root1 = Tk()
        Label(root1,text='你的选择是'+language[i][0]+'!',fg='red',width=20,height=6).pack()
        Button(root1,text='确定',width=3,height=1,command=root1.destroy).pack(side='bottom')

Label(root,text='选择一门你喜欢的编程语言').pack(anchor=W)

#
for lan,num in language:
    Radiobutton(root, text=lan, value=num, command=callRB, variable=v,indicatoron=0,width=10,anchor='c').pack()

root.mainloop()

创建不同组:

from Tkinter import *

root=Tk()
v1=v=IntVar()
#列表中存储的是元素是元组
language=[('python',0),('C++',1),('C',2),('Java',3)]
Animal=[('狗',0),('猫',1),('鸟',2)]
def callRB():
    for i in range(4):
     if v.get()==i:
        root1 = Tk()
        Label(root1,text='你的选择是'+language[i][0]+'!',fg='red',width=20,height=6).pack()
        Button(root1,text='确定',width=3,height=1,command=root1.destroy).pack(side='bottom')

def callRB1():
    for i in range(4):
     if v1.get()==i:
        root1 = Tk()
        Label(root1,text='你的选择是'+Animal[i][0]+'!',fg='red',width=20,height=6).pack()
        Button(root1,text='确定',width=3,height=1,command=root1.destroy).pack(side='bottom')


Label(root,text='选择一门你喜欢的编程语言').pack(anchor=W)

for lan,num in language:
    Radiobutton(root, text=lan, value=num, command=callRB, variable=v,indicatoron=0,width=10,anchor='c').pack()

Label(root,text='选择喜欢的动物',anchor='c').pack()
for An,num in Animal:
    Radiobutton(root, text=An, value=num, command=callRB1, variable=v1, indicatoron=0, width=10, anchor='c').pack()
root.mainloop()
赞(1) 打赏
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

小白学堂,学的不止是技术,更是前程

关于我们免责声明

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏