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