Python.use(better,Tkinter)《余録》Scale

記事一覧 Python.use(better, Tkinter)《Python3.1》

Scale

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

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

事例:Scale

部品 Scale の基本的な機能を紹介します。
次のコードを実行すると、ウィンドウが現われます。

>>> tips1()


  • 〔右側〕スライダー(ノブ)を操作すると、
  • 〔左側〕キャンバスの色が変化します。
def tips1():
    class TIPS(object):
        colors = "red", "green", "blue",

        def __init__(self, master, canvas):
            self.values = self.create_values()
            self.canvas = canvas
            self.create_widget(master)

        def create_values(self):
            return dict((e,IntVar()) for e in self.colors)

        def create_widget(self, master):
            for e in self.colors:
                widget = Scale(
                    master,
                    from_=0, to=255, orient=HORIZONTAL, length=255,
                    variable=self.values[e],
                    command=self,
                    )
                widget.pack()

        def __getitem__(self, index):
            return self.values[index].get()
            
        def __call__(self, event):
            color = [self[e] for e in self.colors]
            bg = ("#"+"%02X"*len(color))%tuple(color)
            self.canvas.config(bg=bg)

    ## ----------------------------------------
    root = Tk()
    root.title("Scale")
    root.config(padx=10, pady=4)

    canvas = Canvas(
        root,
        width=100, height=100, relief=RIDGE, borderwidth=5,
        )
    frame = Frame(root)

    TIPS(frame, canvas)

    canvas.grid(row=0, column=0)
    frame .grid(row=0, column=1)
    root.mainloop()

》こちらに移動中です《
TOP