资讯专栏INFORMATION COLUMN

[译][Tkinter 教程06] Checkbox 控件

RyanHoo / 769人阅读

摘要:已获原作者授权原系列地址简介控件允许用户在多个选项中选择多项则只允许用户选择一项通常会显示为一个空白的方框表示未被选中或者方框中有一个对号或号表示被选中一个对该选项的简短描述会和选择框一同显示的状态会因点击而改变这个点击可能来自鼠标也可能来

已获原作者授权. 原系列地址: Python Tkinter
简介

Checkbox 控件允许用户在多个选项中选择多项. Radiobutton 则只允许用户选择一项.
通常, Checkbox 会显示为一个空白的方框 (表示 false, 未被选中), 或者方框中有一个对号或X号 (表示 true, 被选中). 一个对该选项的简短描述会和选择框一同显示. checkbox 的状态会因点击而改变, 这个点击可能来自鼠标, 也可能来自键盘热键, 比如空格键通常被设置为 checkbox 的选择键.
一个 checkbox 有两种状态: 开 或者 关.
Tkinter 中的 checkbox 可以包含文字, 可多行显示, 但只能使用预设字体; 也可以包含图片. 可以绑定一个 Python 函数或方法. 当 checkbox 被点击时, 该函数或方法会被调用.

简单例子

下例中展示了两个 checkbox: 男和女 ("male" 和 "female"). 每个 checkbox 都和一个不同的变量相关联 (IntVar()).

from tkinter import *
master = Tk()
var1 = IntVar()
Checkbutton(master, text="male", variable=var1).grid(row=0, sticky=W)
var2 = IntVar()
Checkbutton(master, text="female", variable=var2).grid(row=1, sticky=W)
mainloop()

上面的代码会显示如下窗口:

我们可以对上例进行改进. 首先我们加入一个 Label 控件. 然后我们加入两个 Button 控件, 一个用来退出应用, 一个用来查看每个 checkbox 所关联的变量的值.

from tkinter import *
master = Tk()

def var_states():
   print("male: %d,
female: %d" % (var1.get(), var2.get()))

Label(master, text="Your sex:").grid(row=0, sticky=W)
var1 = IntVar()
Checkbutton(master, text="male", variable=var1).grid(row=1, sticky=W)
var2 = IntVar()
Checkbutton(master, text="female", variable=var2).grid(row=2, sticky=W)
Button(master, text="Quit", command=master.quit).grid(row=3, sticky=W, pady=4)
Button(master, text="Show", command=var_states).grid(row=4, sticky=W, pady=4)
mainloop()

上面的代码显示如下窗口:

如果我们勾选 "male" 选项, 然后点击 "show" 按钮, 我们会得到下面的输出:

male: 1,
female: 0
另一个例子

编写一个应用, 用 checkbox 来描述一些编程语言, 比如 Python, Ruby, Perl, C++, 和一些自然语言, 比如 English, German. 这样用户就可以在其中挑选出编程语言和自然语言. 然后再在其中加入两个按钮, 一个用来退出应用, 一个用来查看 checkbox 的取值状态.

#!/usr/bin/python3

from tkinter import *
class Checkbar(Frame):
   def __init__(self, parent=None, picks=[], side=LEFT, anchor=W):
      Frame.__init__(self, parent)
      self.vars = []
      for pick in picks:
         var = IntVar()
         chk = Checkbutton(self, text=pick, variable=var)
         chk.pack(side=side, anchor=anchor, expand=YES)
         self.vars.append(var)
   def state(self):
      return map((lambda var: var.get()), self.vars)
if __name__ == "__main__":
   root = Tk()
   lng = Checkbar(root, ["Python", "Ruby", "Perl", "C++"])
   tgl = Checkbar(root, ["English","German"])
   lng.pack(side=TOP,  fill=X)
   tgl.pack(side=LEFT)
   lng.config(relief=GROOVE, bd=2)

   def allstates(): 
      print(list(lng.state()), list(tgl.state()))
   Button(root, text="Quit", command=root.quit).pack(side=RIGHT)
   Button(root, text="Peek", command=allstates).pack(side=RIGHT)
   root.mainloop()

上面的代码输出如下窗口:


全系列:
[译][Tkinter 教程01] 入门: Label 控件
[译][Tkinter 教程02] Message 控件
[译][Tkinter 教程03] Button 控件
[译][Tkinter 教程04] Variable 类
[译][Tinkter 教程05] Radiobutton 控件
[译][Tkinter 教程06] Checkbox 控件
[译][Tkinter 教程07] Entry 控件
[译][Tkinter 教程08] Canvas 图形绘制
[译][Tkinter 教程09] Scale 控件
[译][Tkinter 教程10] Text 控件
[译][Tkinter 教程11] 对话框和消息框
[译][Tkinter 教程12] 布局管理 (Pack Place Grid)
[译][Tkinter 教程13] Mastermind 游戏
[译][Tkinter 教程14] menu 菜单
[译][Tkinter 教程15] event 事件绑定
译者水平有限, 如有疏漏, 欢迎指正.
已获得原作者授权. 原文地址: Checkboxes

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41483.html

相关文章

  • [][Tkinter 教程03] Button 控件

    摘要:已获原作者授权原系列地址简介控件是一种标准控件用来展现不同样式的按钮控件被用以和用户交互比如按钮被鼠标点击后某种操作被启动和控件类似按钮可以展示图片或者文字不同的是控件可以指定字体控件只能使用单一的字体上的文字可以多行显示可以将一个函数或方 已获原作者授权. 原系列地址: Python Tkinter 简介 Button 控件是一种标准 Tkinter 控件, 用来展现不同样式的按钮...

    googollee 评论0 收藏0
  • [][Tkinter 教程04] Variable 类

    摘要:已获原作者授权原系列地址类有些控件比如控件控件等可以通过传入特定参数直接和一个程序变量绑定这些参数包括这种绑定是双向的如果该变量发生改变与该变量绑定的控件也会随之更新这些控制变量和一般的变量一样都是用来保存某个值的但一般的变量不能被传递给或 已获原作者授权. 原系列地址: Python Tkinter Variable 类 有些控件 (比如 Entry 控件, Radiobutton...

    zilu 评论0 收藏0
  • [][Tkinter 教程14] menu 菜单

    摘要:已获原作者授权原系列地址简介一提到这个词很多人首先想到的是餐馆里的菜单虽然餐馆菜单和计算机程序中的菜单看起来一点也不像但他们确实有很多共同点在餐馆中菜单列举了所有菜品和饮料在计算机程序中菜单通过图形界面展示了应用程序可用的命令和功能在用户界 已获原作者授权. 原系列地址: Python Tkinter 简介 一提到menu这个词, 很多人首先想到的是餐馆里的菜单. 虽然餐馆菜单和计算...

    joyqi 评论0 收藏0
  • [][Tkinter 教程02] Message 控件

    摘要:已获原作者授权原系列地址控件控件用来展示一些文字短消息和控件有些类似但在展示文字方面比要灵活比如控件可以改变字体而控件只能使用一种字体它提供了一个换行对象以使文字可以断为多行它可以支持文字的自动换行及对齐这里要澄清一下前面提到的控件可以改变 已获原作者授权. 原系列地址: Python Tkinter Message 控件 Message 控件用来展示一些文字短消息. Message...

    JowayYoung 评论0 收藏0
  • [][Tinkter 教程05] Radiobutton 控件

    摘要:已获原作者授权原系列地址单选按钮是一种可在多个预先定义的选项中选择出一项的控件单选按钮可显示文字或图片显示文字时只能使用预设字体该控件可以绑定一个函数或方法当单选按钮被选择时该函数或方法将被调用单选按钮这个名字来源于收音机上的调频按钮这些按 已获原作者授权. 原系列地址: Python Tkinter Radio Buttons 单选按钮是一种可在多个预先定义的选项中选择出一项的 T...

    shusen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<