【问题标题】:How to change the side where the current value of the tkinter Scale widget is being displayed?如何更改显示 tkinter Scale 小部件当前值的一侧?
【发布时间】:2014-04-22 11:46:00
【问题描述】:

我正在使用 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()

我希望右刻度的数字在右侧,左刻度的数字在左侧(默认设置)。

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

【问题讨论】:

    标签: python tkinter slider tkinter-scale


    【解决方案1】:

    我认为没有办法向小部件指定数字出现在哪一侧。但是,您可以自定义小部件的showvalue 属性以关闭默认标签,并将IntVar() 分配给刻度的variable 属性以从外部监视滑块的值,并更新可以放置在任何地方的标签小部件随着滑块值的变化:

    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。所有这些小部件都应该由一个几何管理器处理。

    【讨论】:

    • 更清楚一点:您可以在 sampe 应用程序中使用 pack 和 grid,但不能在同一个容器(通常是一个框架)中使用两者
    猜你喜欢
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    相关资源
    最近更新 更多