如何更改显示tkinter Scale小部件当前值的一侧?

时间:2014-04-22 11:46:00

标签: python tkinter slider tkinter-scale

我正在使用tkinter Scale小部件,我有两个彼此相邻的音阶。我希望其中一个的数字转到另一边。

这是我正在使用的代码:

#IMPORTS
from tkinter import *
import time

#USER INPUT
user = input("Please Enter Your Username")
time.sleep(0.4)
pass_ = imput("Please Enter Your Password")
time.sleep(0.6)              

#DEFINITIONS

#STUFF
master = Tk()

#LEFT
left = Scale(master,from_=0,to=249,length=550,width=25,tickinterval=152,sliderlength=30)
left.pack()
left.set(152)
left.grid(row=0, column=3)

#RIGHT
right = Scale(master,from_=0,to=249,length=550,width=25,tickinterval=152,sliderlength=30)
right.pack()
right.set(152)
right.grid(row=0, column=6)

#BUTTONS
send = Button(master,text="Send To Bot",command=send)
send.pack()
send.grid(row=15, column=4)

#RUN CANVAS
mainloop()

我想要正确的比例,右侧的数字和左侧的数字是左侧的数字(默认设置)。

(顺便说一下,这个编码没有完成,这就是定义没有完成的原因。)

1 个答案:

答案 0 :(得分:2)

我不认为有一种方法可以指定小部件显示在哪一侧。但是,您可以自定义窗口小部件的showvalue属性以关闭默认标签,并为缩放的IntVar()属性分配variable以监控其值滑块外部,并更新Label小部件,您可以随着滑块的值更改放置在任何位置:

master = Tk()

leftValue = IntVar()  # IntVars to hold
rightValue = IntVar() # values of scales

leftScale = Scale(master, from_=0, to=249, variable=leftValue, showvalue=0)
leftScale.set(152)

rightScale = Scale(master, from_=0, to=249, variable=rightValue, showvalue=0)
rightScale.set(152)

leftLabel = Label(master, textvariable=leftValue)   # labels that will update
rightLabel = Label(master, textvariable=rightValue) # with IntVars as slider moves

leftLabel.grid(row=0, column=0)
leftScale.grid(row=0, column=1)
rightLabel.grid(row=0, column=3)
rightScale.grid(row=0, column=2)

mainloop()

当然,随着滑块的变化,标签不会移动,但如果你真的需要这个功能,你可以考虑创建一个Frame的子类,并找到一种方法来改变Label的几何形状。滑块的值更改。

编辑:就像说明一样,你不应该在代码中混合包和网格。所有这些小部件都应由一个几何管理器处理。