Board logo

标题: Python的标准GUI库Tkinter开发基础 - 使用单选按钮和复选框控件 [打印本页]

作者: 龙听    时间: 2024-3-31 21:28     标题: Python的标准GUI库Tkinter开发基础 - 使用单选按钮和复选框控件

在Python程序中,在一组单选按钮中只有一个选项被选中,而在复选框中可以同时选择多个选项。在Tkinter库的控件中,使用tkinter.Radiobutton与tkinter.Checkbutton可以分别创建单选按钮和复选框。通过向它传递属性参数的方式可以单独设置单选按钮和复选框的背景色、大小、状态等。单选按钮和复选框控件常用的属性控制参数如表 4-6所示。

表4-6 单选按钮和复选框控件常用的属性控制参数



在Python程序中,variable是单选按钮和复选框控件中比较重要的属性参数,需要使用tkinter.IntVar或tkinter.StringVar生成通过variable指定的变量。其中tkinter.IntVar可以生成一个整型变量,而tkinter.StringVar可以生成一个字符串变量。当使用tkinter.IntVar或者tkinter.StringVar生成变量后,可以使用set()方法设置变量的初始值。如果这个初始值与组件的value所指定的值相同,则这个组件处于被选中状态。如果其他组件被选中,则变量值将被修改为这个组件value所指定的值。

实例文件danfu.py演示了在Tkinter窗体中创建单选按钮和复选框的过程。
  1. import tkinter #导入tkinter模块
  2. root = tkinter.Tk()#生成一个主窗口对象
  3. r = tkinter.StringVar()#生成字符串变量
  4. r.set('1')#初始化变量值
  5. radio = tkinter.Radiobutton(root,#创建单选按钮1
  6. variable = r,#单选按钮关联的变量
  7. value ='1',#设置选中单选按钮时的变量值
  8. text ='单选按钮1')#设置单选按钮的显示文本
  9. radio.pack()#将单选按钮1添加到窗口中
  10. radio = tkinter.Radiobutton(root,#创建单选按钮2
  11. variable = r,#单选按钮关联的变量
  12. value ='2',#设置选中单选按钮时的变量值
  13. text ='单选按钮2')#设置单选按钮的显示文本
  14. radio.pack()#将单选按钮2添加到窗口中
  15. radio = tkinter.Radiobutton(root,#创建单选按钮3
  16. variable = r,#单选按钮关联的变量
  17. value ='3',#设置选中单选按钮时的变量值
  18. text ='单选按钮3')#设置单选按钮的显示文本
  19. radio.pack()#将单选按钮3添加到窗口中
  20. radio = tkinter.Radiobutton(root,#创建单选按钮4
  21. variable = r,#单选按钮关联的变量
  22. value ='4',#设置选中单选按钮时的变量值
  23. text ='单选按钮4')#设置单选按钮的显示文本
  24. radio.pack()#将单选按钮4添加到窗口中
  25. c = tkinter.IntVar()#生成整型变量
  26. c.set(1)#变量初始化
  27. check = tkinter.Checkbutton(root,#创建复选按钮
  28. text ='复选按钮',#设置复选按钮的显示文本
  29. variable = c,#复选按钮关联的变量
  30. onvalue =1,#设置选中复选按钮时的变量值1
  31. offvalue =2)#设置未选中复选按钮时的变量值2
  32. check.pack()#将复选按钮添加到窗口中
  33. root.mainloop()#进入消息循环
  34. print(r.get())#调用函数get()输出r
  35. print(c.get())#调用函数get()输出c
复制代码
在上述实例代码中,在主窗口中分别创建了一个包含4个选项的单选按钮和一个复选框,其中使用函数StringVar()生成字符串变量,并将生成的字符串用于单选按钮组件。使用函数IntVar()生成整型变量,并将生成的变量用于复选框。执行文件danfu.py后的效果如图4-9所示。






欢迎光临 龙听期货论坛 (http://www.qhlt.cn/) Powered by Discuz! 7.2