已获原做者受权. 原系列地址: Python Tkinter
Checkbox 控件容许用户在多个选项中选择多项. Radiobutton 则只容许用户选择一项.
一般, Checkbox 会显示为一个空白的方框 (表示 false, 未被选中), 或者方框中有一个对号或X号 (表示 true, 被选中). 一个对该选项的简短描述会和选择框一同显示. checkbox 的状态会因点击而改变, 这个点击可能来自鼠标, 也可能来自键盘热键, 好比空格键一般被设置为 checkbox 的选择键.
一个 checkbox 有两种状态: 开 或者 关.
Tkinter 中的 checkbox 能够包含文字, 可多行显示, 但只能使用预设字体; 也能够包含图片. 能够绑定一个 Python 函数或方法. 当 checkbox 被点击时, 该函数或方法会被调用.php
下例中展现了两个 checkbox: 男和女 ("male" 和 "female"). 每一个 checkbox 都和一个不一样的变量相关联 (IntVar()
).python
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 所关联的变量的值.segmentfault
from tkinter import * master = Tk() def var_states(): print("male: %d,\nfemale: %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()
上面的代码显示以下窗口:app
若是咱们勾选 "male" 选项, 而后点击 "show" 按钮, 咱们会获得下面的输出:编程语言
male: 1, female: 0
编写一个应用, 用 checkbox 来描述一些编程语言, 好比 Python, Ruby, Perl, C++, 和一些天然语言, 好比 English, German. 这样用户就能够在其中挑选出编程语言和天然语言. 而后再在其中加入两个按钮, 一个用来退出应用, 一个用来查看 checkbox 的取值状态.ide
#!/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