zoukankan      html  css  js  c++  java
  • GUI的最终选择 Tkinter(三):Checkbutton组件和Radiobutton组件、LabelFrame组件

    Checkbutton组件

    Checkbutton组件就是常见的多选按钮,而Radiobutton则是单选按钮

     1 from tkinter import *
     2 
     3 root = Tk()
     4 v = IntVar() #设置一个Tkinter变量,用于表示该按钮是否被选中
     5 c = Checkbutton(root,text="测试一下",variable=v)
     6 c.pack()
     7 
     8 #如果选项被选中,那么变量v被赋值为1,否则为0
     9 l = Label(root,textvariable=v)  #用Label标签动态展示状态
    10 l.pack()
    11 mainloop()

    执行结果:

    当单击选项时,Label显示的变量相应地发生了改变。

    根据上面的基础,但是如果是多个选项时,我们就可以用for循环来显示数据,例

    from tkinter import *
    
    root = Tk()
    gilrs = ["杨幂","唐嫣","小龙女","孙俪"]
    v = []
    for g in gilrs:
        v.append(IntVar())
        b = Checkbutton(root,text=g,variable=v[-1])
        b.pack(anchor=W)
    mainloop()

    执行结果:

    注意哦,我这里对pack()方法的anchor选项实现了定位显示位置,让其左对齐pack(anchor=W),其可设置为N,NE,E,SE,S,SW,W,NW和CENTER九个不同的值。这就是指南针的九个不同方位,按照“上北下南左西右东”的原则,如下图

     

     Radiobutton组件

    Radiobutton组件跟Checkbutton组件的用法基本一致,唯一不同的是Radiobuttonbutton实现的是单选效果,要实现这种互斥的效果,同一组内的所有Radiobutton只能共享一个variable选项,并且需要设置不同的value选项值。

    1 from tkinter import *
    2 
    3 root = Tk()
    4 v = IntVar()
    5 Radiobutton(root,text="one",variable=v,value=1).pack(anchor=W)
    6 Radiobutton(root,text="two",variable=v,value=2).pack(anchor=W)
    7 Radiobutton(root,text="three",variable=v,value=3).pack(anchor=W)
    8 Radiobutton(root,text="four",variable=v,value=4).pack(anchor=W)
    9 mainloop()

    执行效果:

    程序中如果有多个选项,可以用循环来处理,这样代码会简洁,例如:

     1 from tkinter import *
     2 
     3 root = Tk()
     4 langs = [("python",1),("perl",2),("ruby",3)]
     5 v = IntVar()
     6 v.set(1)
     7 for lang,num in langs:
     8     b = Radiobutton(root,text=lang,variable=v,value=num)
     9     b.pack(anchor=W)
    10 mainloop()

    执行结果:

    如果你不喜欢按钮前面的小圆圈,可以替换成按钮的形式

    b = Radiobutton(root,text=lang,variable=v,value=num,indicatoron=False)
    b.pack(fill=X)

    修改后程序如图:

    LabelFrame组件

     LabelFrame组件是Frame框架的进化版,从形态上来说,也就是添加了Label和Frame,但有了它,Checkbutton和Radiobutton的组件分组就简单了。

    from tkinter import *
    
    root = Tk()
    group = LabelFrame(root,text="最好的脚本语言是:",padx=5,pady=5)
    group.pack(padx=10,pady=10)
    
    langs = [("python",1),("perl",2),("ruby",3)]
    v = IntVar()
    v.set(1)
    for lang,num in langs:
        b = Radiobutton(group,text=lang,variable=v,value=num)
        b.pack(anchor=W)
    mainloop()

    执行结果:

  • 相关阅读:
    第一章 线性模型
    Kaggle比赛:从何着手?
    Kaggle初学者五步入门指南,七大诀窍助你享受竞赛
    3.深度学习的实用层面
    软件工程面试题
    PyQT5速成教程-4 Qt Designer实战[上]
    PyQT5速成教程-3 布局管理
    PyQT5速成教程-1 简介与环境搭建
    Anaconda 使用指南
    webpack的loader的原理和实现
  • 原文地址:https://www.cnblogs.com/pinpin/p/9948925.html
Copyright © 2011-2022 走看看