gpt4 book ai didi

python - Tkinter Spinbox 范围验证

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:28 24 4
gpt4 key购买 nike

我正在尝试利用 Bryan Oakley 的这个出色答案,但无济于事 ( https://stackoverflow.com/a/4140988/5060127 )...

我想用同样的方法来验证 Spinbox 的值。我已经为旋转框定义了 from_ 和 to 值,但用户仍然可以在其中键入大部分内容...应该验证用户只能输入 from_-to 范围内的值,并且只能输入整数。

这是显示我已经走了多远的代码...

try:
from Tkinter import *
except ImportError:
from tkinter import *

class GUI:
def __init__(self):
# root window of the whole program
self.root = Tk()
self.root.title('ImageSound')

# registering validation command
vldt_ifnum_cmd = (self.root.register(self.ValidateIfNum),'%s', '%S')

# creating a spinbox
harm_count = Spinbox(self.root, from_=1, to=128, width=5, justify='right', validate='all', validatecommand=vldt_ifnum_cmd)
harm_count.delete(0,'end')
harm_count.insert(0,8)
harm_count.pack(padx=10, pady=10)

def ValidateIfNum(self, s, S):
# disallow anything but numbers
valid = S.isdigit()
if not valid:
self.root.bell()
return valid

if __name__ == '__main__':
mainwindow = GUI()
mainloop()

最佳答案

我想我找到了问题所在。 Validator 函数最初使用 S='' 调用,您的条件 S.isdigit() 返回 False 并且不再调用该函数。但在我将条件更新为 valid = S == '' or S.isdigit() 后,它开始按预期工作。

当然,您可能需要一些更复杂的条件(例如,检查值是否在范围内),但看起来空字符串必须通过(至少是初始的)验证。

关于python - Tkinter Spinbox 范围验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31158668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com