Python.use(better,Tkinter)《12》Radiobutton

記事一覧《こちらに移動中です》2006年12月19日 (火)

Python.use(better, Tkinter)
Radiobutton《Python3.1》

《著》森こねこ・小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪1993/11/25 ● 第1版♪2006/10/28

概要

部品 Radiobutton を基本的な機能を紹介します。

Tkinter によるオブジェクト指向プログラミングへの扉を開きます。
※ Tcl/Tk で作成した例題を、Tkinter で再構成しました。

事例1:

次のコードを実行すると、ウィンドウが現われます。

>>> ex_Radiobutton1()

  • 任意のボタンを選択すると、その項目だけが有効となります。複数の項目を同時に選択することはできません。
def ex_Radiobutton1():
    root = Tk()
    root.title("Radiobutton")
    root.geometry("200x50")
    for e in "NEWS":
        w = Radiobutton(root, text=e, value=e)
        w.pack(side=LEFT)
    root.mainloop()

事例2:

次のコードを実行すると、ウィンドウが現われます。

>>> ex_Radiobutton2()
#flat
#groove
#raised
#ridge
#solid
#sunken
  • 任意のボタンを選択すると、このような情報を出力します。


  • variable= に指定した変数を介して、選択した項目の値を獲得 get /設定 set できます。
def ex_Radiobutton2():
    root = Tk(); root.title("Radiobutton")

    s = FLAT, GROOVE, RAISED, RIDGE, SOLID, SUNKEN,

    def widget():
        return Radiobutton(root,
            text=e, fg="red", bg="yellow",
            width=8, height=3, borderwidth=5,
            relief=e, 
            value="#%s"%e, 
            variable=variable,
            command=lambda: print(variable.get()), 
            )

    dim = 3; variable = StringVar()
    for i, e in enumerate(s):
        ry, cx = i//dim, i%dim
        w = widget()
        w.grid(row=ry, column=cx)
        
    root.mainloop()
  • 3 行 8 列の文字からなるテキスト項目に、幅 5 の境界が表示されます。
  • 赤色の文字が黄色を背景に表示されます。

《Note》

class Radiobutton(Widget):        # /Python-3.0/Lib/tkinter/__init__.py
    """Radiobutton widget which shows only one of several buttons in on-state."""
    def __init__(self, master=None, cnf={}, **kw):
  • 複数の選択肢の中から単一の項目を選択させたいときに便利な機能を提供します。
keyword arguments
relief= 部品の外枠の形状。
FLAT(規定値)/GROOVE/RAISED/RIDGE/SOLID/SUNKEN
width= テキストの幅(文字数)
height= テキストの高さ(文字数)
borderwidth= 境界の幅(画素数
text= テキスト(文字列)
font= テキスト(フォント)
foreground= テキスト(文字色)
background= テキスト(背景色)
value= 各項目が保持する値
command= 各項目を選択したときに起動される関数