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

0 投票
1 回答
3927 浏览
提问于 2025-04-18 03:44

我正在使用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。这些小部件应该只用一个几何管理器来处理。

撰写回答