《Python3.0》Scale Widget #1 ★

Python.use(better, Tkinter)記事一覧
Scale Widget #1

《著》森こねこ+小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
第1版♪2003/05/23 ● 第2版♪2006/11/28 ● 第3版♪2009/05/12

概要:Scale Widget

Scale は、ある範囲で値を設定したいときに、便利な機能を提供します。

>>> Scale.__doc__
'Scale widget which can display a numerical scale.'
>>> print(Scale.__init__.__doc__)
Construct a scale widget with the parent MASTER.

        Valid resource names: activebackground, background, bigincrement, bd,
        bg, borderwidth, command, cursor, digits, fg, font, foreground, from,
        highlightbackground, highlightcolor, highlightthickness, label,
        length, orient, relief, repeatdelay, repeatinterval, resolution,
        showvalue, sliderlength, sliderrelief, state, takefocus,
        tickinterval, to, troughcolor, variable, width.

事例:Scale Widget

モジュールを起動すると、次のようなウィンドウが現れます。

$ python3.0 exSlider1.py 


コードの解説:

#! /usr/bin/Python3.0
from tkinter import *

class Ex(Frame):
    def __init__(self, *args):
        super().__init__(*args)
        Pack.config(self)
        self.createWidgets()

    def createWidgets(self):
        self.slider = Scale(
            self,
            name = "slider",
            from_ = 0, to = 100,
            orient = HORIZONTAL,
            length = "8cm",
            label = "Slider",
            command = self.update,
            )
from_ 下限
to 上限
orient 方向 水平 HORIZONTAL
length 長さ
label ラベル
command コマンド 動作を規定します
        for name, text, command in [
            ("minButton"  , '|<'  , self.reset_min ),
            ("leftButton" , '<<'  , self.skip_left ),
            ("rightButton", '>>'  , self.skip_right),
            ("maxButton"  , '>|'  , self.reset_max ),
            ("quitButton" , 'Quit', self.quit      ),
        ]:
            setattr(self, name, Button(
                self,
                name = name,
                text = text,
                command = command,
                ))
        self.slider.pack(side = LEFT)
        self.minButton.pack(side = LEFT)
        self.leftButton.pack(side = LEFT)
        self.rightButton.pack(side = LEFT)
        self.maxButton.pack(side = LEFT)
        self.quitButton.pack(side = LEFT, fill = BOTH)

    def update(self, val):
        self.slider["label"] = "Slider value: %s"%val

    def min(self):
        return self.slider["from"]

    def max(self):
        return self.slider["to"]

    def value(self):
        return self.slider.get()

    def reset_min(self):
        value = self.min()
        self.slider.set(value)

    def skip_left(self):
        value = max(self.value()-10, self.min())
        self.slider.set(value)

    def skip_right(self):
        value = min(self.value()+10, self.max())
        self.slider.set(value)

    def reset_max(self):
        value = self.max()
        self.slider.set(value)

スライダー self.slider に対しては、メソッド get で値を獲得して、メソッド set で値を設定できます。

## ----------------------------------------
def example(*args):
    ex = Ex()
    ex.mainloop()

## ----------------------------------------
if __name__=='__main__':
    example()

Tips

》作業中です《

Last updated♪09/06/05