如何更改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 个回答
2
我觉得这个小部件没有办法指定数字显示在哪一边。不过,你可以调整这个小部件的 showvalue
属性,把默认的标签关掉,然后给滑块的 variable
属性赋值一个 IntVar()
,这样就可以在外部监控滑块的值变化,并更新一个你可以放在任何地方的标签小部件,随着滑块的值变化而变化:
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 的子类,想办法在滑块的值变化时调整标签的位置。
补充一下,记得不要在代码中混用 pack 和 grid。这些小部件应该只用一个几何管理器来处理。