Python中GUI设计之tkinter控件的使用(RadioButton选项按钮和CheckButton复选按钮)

  • Post author:
  • Post category:python




1. 选项按钮:RadioButton


1. 格式:RadioButton(父容器,options…)



options:下面总结一部分常用的。

  1. activebackground: 光标在选项按钮上时的背景颜色。
  2. activeforeground: 光标在选项按钮上时的前景颜色。
  3. bg: 背景色。
  4. fg: 前景色。
  5. bd: 边界宽度,默认2个像素。
  6. command: 更改选项时,所引发的事件。
  7. indicatoron: 此项为0时,显示盒子选项按钮。
  8. padx: 默认1,可以设置选项按钮与文字的间隔。
  9. selectcolor: 当选项按钮被选取时的颜色。
  10. state:默认NORMAL,禁用为DISABLE。
  11. text: 选项按钮旁的文字。
  12. textvariable: 以变量方式显示选项的按钮文字。
  13. value: 选项按钮的值,可以区分选项按钮。
  14. 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…)

  1. 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()
  1. 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 版权协议,转载请附上原文出处链接和本声明。