当前位置:   article > 正文

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

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

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

运行:
在这里插入图片描述
示例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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

运行:
在这里插入图片描述
只要在上面的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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

运行:
在这里插入图片描述
感谢路过,拜了个拜。。。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/813423
推荐阅读
相关标签
  

闽ICP备14008679号