gpt4 book ai didi

python - 限制空小部件的大小

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:00 24 4
gpt4 key购买 nike

我一直在网上寻找不使用“类”功能的答案,但并不是很成功。例如,我有 3 个输入框,我尝试使用 this function (由 DorinPopescu 提交),但我不想获取和设置特定的 StringVar,而是希望将相关的 StringVar 传递给函数并传递条目的大小。

我已经尝试过这个:

def limitSize(entry, max):
max = int(max)
value = entry.get()
if len(value) > max: entry.set(value[:max])

UsernameVar= StringVar()
UsernameVar.trace('w', lambda: limitSize(UsernameVar, 10))
PasswordVar= StringVar()
PasswordVar.trace('w', lambda: limitSize(PasswordVar, 4))
AgeVar= StringVar()
AgeVar.trace('w', lambda: limitSize(AgeVar, 2))

Username=Entry(root, textvariable=UsernameVar).pack()
Password=Entry(root, textvariable=PasswordVar).pack()
Age=Entry(root, textvariable=AgeVar).pack()

最佳答案

条目小部件有专门针对此类事情的选项。您可以设置一个回调来验证输入,并拒绝任何违反约束的输入。

下面是一个将用户名限制为 10 个字符、密码限制为 4 个字符的工作示例:

import Tkinter as tk

def limitSize(new_value, max_len):
return True if len(new_value) <= int(max_len) else False

root = tk.Tk()
_limitSize = root.register(limitSize)

username = tk.Entry(root, validate="key", validatecommand=(_limitSize, '%P', 10))
password = tk.Entry(root, validate="key", validatecommand=(_limitSize, '%P', 4))
username.pack(fill="x")
password.pack(fill="x")

root.mainloop()

validate 选项指定验证何时完成。 "key" 导致每次按键时都会进行验证。其他值相对不言自明:“none”、“focus”、“focusin”、“focusout”或“all”。

validatecommand 选项指定一个元组,该元组需要已向底层 tcl 解释器注册的命令以及零个或多个参数。 Tkinter 有许多特殊参数,这些参数可以替换为可用于验证的信息。在上面的示例中,如果允许编辑,“%P”将替换为条目小部件的值。您还可以访问编辑类型(插入或删除)、插入的新文本以及其他一些内容。

在这种情况下,我们只关心允许编辑的值。回调必须始终返回 TrueFalse。如果返回True,则允许修改,如果False,则不允许修改。

需要了解的一件重要事情:传递给函数的值将被转换为字符串。这就是为什么在上面的示例中,在进行比较之前将 max_len 转换为 int。

有关更深入的示例,请参阅此答案:https://stackoverflow.com/a/4140988/7432

关于python - 限制空小部件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48323930/

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