tkinter -- Scale

发布时间:2018-06-04 17:33:23编辑:Run阅读(3211)

    Scale 为输出限定范围的数字区间,可以为之指定最大值,最小值及步距值

    创建一个Scale

    代码:

    import tkinter as tk
    root = tk.Tk()
    tk.Scale(root).pack()
    root.mainloop()

    效果:

    blob.png

    创建一个垂直 Scale,最大值为100,最小值为0,步距值为1。这个参数设置也就是 Scale的缺省设置了



    改变这三个参数,生成 一个水平 Scale,最小值为-500,最大值为500,步距值为5

    from_       设置最小值,注意后面有个_

    to          设置最大值

    resolution  设置步距值

    orient      设置方向

    代码:

    import tkinter as tk
    root = tk.Tk()
    tk.Scale(root, from_=-500, to=500, resolution=5, orient='horizontal').pack()
    root.mainloop()

    效果:

    blob.png

    注意 from_的使用方式,在其后添加了"_",避免与关键字 from 的冲突



    Scale 绑定变量

    代码:

    import tkinter as tk
    root = tk.Tk()
    v = tk.IntVar()
    scale = tk.Scale(root, from_=1, to=100, resolution=1, orient='horizontal', variable=v)
    scale.pack()
    print(v.get())
    root.mainloop()

    效果:

    blob.png



    使用回调函数打印当前的值

    代码:

    import tkinter as tk
    root = tk.Tk()
    def printscale(text):
        print('text = {}'.format(text))
        print('v = {}'.format(v.get()))
    
    v = tk.StringVar()
    
    tk.scale = tk.Scale(root,
                        from_=1,  # 设置最小值
                        to=100,   # 设置最大值
                        resolution=1,  # 设置步距值
                        orient='horizontal',  # 设置水平方向
                        variable=v,  # 绑定变量
                        command=printscale  # 设置回调函数
                        ).pack()
    
    print(v.get())
    root.mainloop()

    效果:

    444.gif

    这个回调函数有一个参数,这个值是当前的 Scale 的值,每移动一个步距就会调用一次这个函数



    控制显示位数,可以理解为:Scale 的值为一整形,在输出显示时,它将会被转化为一字符串,如1.2转化为1.2或1.2000都是可以的

    属性 digits 是控制显示的数字位数,将数据以8位形式显示,在最后一位会添加一个0

    代码:

    import tkinter as tk
    root = tk.Tk()
    def printscale(text):
        print('text = {}'.format(text))
        print('v = {}'.format(v.get()))
    
    v = tk.StringVar()
    
    tk.scale = tk.Scale(root,
                        from_=0,  # 设置最小值
                        to=100.0,   # 设置最大值
                        resolution=0.0001,  # 设置步距值
                        orient='horizontal',  # 设置水平方向
                        digits=8,  # 设置显示的位数为8
                        variable=v,  # 绑定变量
                        command=printscale  # 设置回调函数
                        ).pack()
    
    print(v.get())
    root.mainloop()

    结果:

    blob.png




    设置 Scale 的标签属性 label

    代码:

    import tkinter as tk
    root = tk.Tk()
    tk.scale = tk.Scale(root,
                        from_=0,  # 设置最小值
                        to=100,   # 设置最大值
                        resolution=1,  # 设置步距值
                        orient='horizontal',  # 设置水平方向
                        label='choice:',  # 设置标签值
                        ).pack()
    
    root.mainloop()

    效果:

    blob.png

    由 label 设置的值会显示在水平 Scale 的上方,用于提示信息



    设置/取得 Scale 的值

    代码:

    import tkinter as tk
    root = tk.Tk()
    root.geometry('200x100')  # 设置弹框为200 x 100大小
    v = tk.StringVar()
    
    def text(text):
        print(s.get())
    s = tk.Scale(root,
             from_=0,  # 设置最小值
             to=100,   # 设置最大值
             resolution=1,  # 设置步距值
             orient='horizontal',  # 设置水平方向
             variable=v,  # 绑定变量
             label='choice',  # 设置标签值
             command=text  # 设置回调函数
             )
    
             
    # 设置初始值为50
    s.set(50)
    s.pack()
    root.mainloop()

    效果:

    blob.png

    slider 的位置位于了中间,sl.set(50)起作用了,打印值为50

关键字

上一篇: tkinter -- Listbox

下一篇: tkinter -- Spinbox