[訳][Tkinterチュートリアル06]Checkboxコントロール

3611 ワード

原作者の権限を取得しました.元シリーズアドレス:Python Tkinter
概要
Checkboxコントロールは、ユーザが複数の選択肢の中から複数選択できるようにする.Radiobuttonでは、ユーザが1つだけ選択できるようにする.通常、Checkboxは空白のボックス(falseを表す、選択されていない)として表示するか、ボックスにペアまたはX番号(trueを表す、選択されている)として表示される.このオプションの簡単な説明が選択ボックスとともに表示されます.checkboxの状態はクリックによって変化するが、このクリックはマウスから来てもよいし、キーボードのホットキーから来てもよい.例えば、スペースキーは通常checkboxの選択キーとして設定.1つのcheckboxには2つの状態がある:オンまたはオフ.Tkinterのcheckboxには文字が含まれ、複数行表示できますが、プリセットフォントしか使用できません.画像を含むもよい.Python関数またはメソッドをバインドできます.checkboxがクリックすると、関数またはメソッドが呼び出される.
簡単な例
次の例では、男性と女性(「male」と「female」)の2つのcheckboxを示します.各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コントロールを追加します次に、各checkboxに関連付けられた変数の値を表示するための2つのButtonコントロールを追加します.
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

別の例
Python、Ruby、Perl、C++、English、Germanなどのいくつかのプログラミング言語をcheckboxで記述するアプリケーションを作成します.これにより、ユーザはその中からプログラミング言語と自然言語を選択することができる.次に、アプリケーションを終了するための2つのボタンと、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