1. 选项按钮:RadioButton
1. 格式:RadioButton(父容器,options…)
options:下面总结一部分常用的。
- activebackground: 光标在选项按钮上时的背景颜色。
- activeforeground: 光标在选项按钮上时的前景颜色。
- bg: 背景色。
- fg: 前景色。
- bd: 边界宽度,默认2个像素。
- command: 更改选项时,所引发的事件。
- indicatoron: 此项为0时,显示盒子选项按钮。
- padx: 默认1,可以设置选项按钮与文字的间隔。
- selectcolor: 当选项按钮被选取时的颜色。
- state:默认NORMAL,禁用为DISABLE。
- text: 选项按钮旁的文字。
- textvariable: 以变量方式显示选项的按钮文字。
- value: 选项按钮的值,可以区分选项按钮。
- variable: 设置或这读取当前选取的单选按钮,类型为:IntVar或者StringVar。
示例:
from tkinter import *
# 打印Label的text内容的方法
def printSelection():
num=var.get()
if(num==1):
label.config(text="你是男生") # 通过config()方法改变text值
else:
label.config(text="你是女生")
root =Tk()
root.title("RadioButton")
# 按钮绑定的变量,可以是IntVar类型,也可以是StringVar类型(下面set()中填入字符串)
var=IntVar()
# 默认男生
var.set(1)
label=Label(root,
text="请选择下面的按钮",
bg="lightyellow",
width=30)
label.pack()
rbMan=Radiobutton(root,
text="男生",
variable=var, # 绑定变量
value=1, # 设置选项按钮的值
command=printSelection)
rbMan.pack()
rbWoman=Radiobutton(root,
text="女生",
variable=var,
value=2,
command=printSelection)
rbWoman.pack()
root.mainloop()
运行:
示例2:使用字典遍历选项按钮
from tkinter import *
def printSelection():
print(cities[var.get()])
root=Tk()
root.title("使用字典遍历多选按钮")
# 创建字典
cities={0:"北京",1:'上海',2:"广州",3:"深圳",4:"天津"}
var=IntVar()
var.set(0)
label=Label(root,text="选择一个你想去旅游得城市",
fg="blue",
bg="lightyellow",
width=30).pack()
# 使用for循环遍历字典中得索引、城市名
for val,city in cities.items():
Radiobutton(root,
text=city,
variable=var,
value=val,
command=printSelection).pack()
root.mainloop()
运行:
只要在上面的Radiobutton() 中添加一句:indicatoron=0, 然后适当调整宽度,多选按钮则会变成盒子样式,如下图:
2. 复选按钮:Checkbutton
1. 格式:Checkbutton(父容器,options…)
- offvalue 和 offvalue:控制变量,可以通过var设置当前复选框的状态是选定与否。
var = tk.StringVar()
var.set("T")
c = tk.Checkbutton(root,
text="测试",
variable=var,
onvalue="T", # 由于前面var变量已经被赋值为“T”,所以改复选框是选定状态
offvalue="F") # 如果前面的var变量被赋值为“F”,那么当前复选框就是未选定状态
c.pack()
- variable: 设置或者获取当前复选框,值类型通常是IntVar或者StringVar类型。
示例:
from tkinter import *
# 打印方法
def printInfo():
selection=''
for i in checkboxes: # 遍历checkboxes字典,元组类型为bool
if checkboxes[i].get()==True: # 如果当前元组为true,则分别打印,\t表示tab向后
selection=selection+sports[i]+"\t"
print(selection)
root=Tk()
root.title("CheckButton")
Label(root,
text="请选择你喜欢的运动项目",
fg="blue",
bg="lightyellow",
width=30).grid(row=0)
# 运动项目字典
sports={0:"足球",1:"篮球",2:"乒乓球",3:"网球"}
# 创建字典,用于存储选择状态的bool对象
checkboxes={}
# 使用for遍历运动项目字典,并动态创建Checkbutton
for i in range(len(sports)):
checkboxes[i]=BooleanVar() # 创建bool变量对象,添加到checkboxes字典
# 创建Checkbutton复选按钮
Checkbutton(root,
text=sports[i],
variable=checkboxes[i]).grid(row=i+1,sticky=W) # 靠西分布,每创建一个另起一行
btn=Button(root,
text="确定",
width=10,
command=printInfo) # 按下按钮,触发打印事件
btn.grid(row=i+2)
root.mainloop()
运行:
感谢路过,拜了个拜。。。。
版权声明:本文为qq_34699535原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。