Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取当前spinbox';从';和';至';价值观_Python_Tkinter_Spinbox - Fatal编程技术网

Python 如何获取当前spinbox';从';和';至';价值观

Python 如何获取当前spinbox';从';和';至';价值观,python,tkinter,spinbox,Python,Tkinter,Spinbox,如何从函数中获取spinbox和to的值 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=="":

如何从函数中获取spinbox和to的值

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

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

编辑-用于多个微调框
要将其用于多个微调框,请将
validatecommand
更改为
validatecommand=(windows.register(validate),'%P','%W')

并将
validate(userInput)
更改为
validate(userInput,小部件)
。然后将我答案中的
sbDays
替换为
windows.nametowidget(widget)
,它应该可以工作。

validatecommand
中的
%W
给出了小部件的名称(from),然后使用该名称获取具有
nametWidget
(from)的小部件。

您也可以像这样使用
.config
方法:
sbDays.config(“from”)
sbDays.config(“to”)
。它返回类似于
('from','from',from',0,0.0)
('to','to','to',0,366.0)
。请注意,最后一个值是我们需要的值,因此使用
sbDays.config(…)[-1]
应该会得到所需的结果。

是否有理由说明
cget
config
更好,或者这只是一个首选项?我通常使用
config
从tkinter小部件设置和获取值。@我忘了提到我有几个从函数调用的spinbox。@从,看起来他们差不多是same@Vincent我已更新了我的答案,以便与多个spinboxes@TheLizzard:
config
将返回一个值列表
cget
只返回一个值,如果您只对当前配置的值感兴趣,则更方便。请注意,
.config(“from”)
将返回一个以最后一项为值的元组,而
.cget(“from”)
直接获取值。@acw1668谢谢您注意,我将更改我的答案。
minVal=spinbox 'from' value of '0'
maxVal=spinbox 'to' value of '366'

return val>=minVal and val<=maxVal
minVal=this.From()
maxVal=this.To()