首页 > 解决方案 > 如何获取当前 spinbox 'from' 和 'to' 值

问题描述

如何在函数中从和到获取 spinbox 的值?

sbDays=tk.Spinbox(frame,from_=0,to=366)
sbDays.place(relx=initialX,rely=yDistance)
sbDays.configure(validate='all',validatecommand=(windows.register(validate),'%P'))

def validate(userInput): 
    if userInput=="":
        return True

    try:
        val=int(float(userInput))
    except ValueError:
        return False
    return val>=0 and val<=366

而不是return val>=0 and val<=366. 我需要这个:

minVal=spinbox 'from' value of '0'
maxVal=spinbox 'to' value of '366'

return val>=minVal and val<=maxVal

在 C# 中,是这样的:

minVal=this.From()
maxVal=this.To()

标签: pythontkinterspinbox

解决方案


您可以使用该cget方法从小部件中获取属性。
在这种情况下,您需要minVal = sbDays.cget("from")并且maxVal = sbDays.cget("to")

编辑 - 用于多个 spinbox
要将其与多个 spinbox 一起使用,请将 to 更改validatecommand
validatecommand=(windows.register(validate),'%P', '%W')
并更改validate(userInput)validate(userInput, widget). 然后sbDays在我的答案中替换windows.nametowidget(widget)它应该可以工作。 中的
给出了小部件的名称(来自这里),然后用于获取小部件(来自这里)。%Wvalidatecommandnametowidget


推荐阅读