|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 lzb1001 于 2022-5-15 22:47 编辑
win10,Python版本3.7.6
-------------------------------
from tkinter import *
root = Tk()
v = StringVar()
def test(content, reason, name):
if content == '小甲鱼':
print('输入正确!')
print(content, reason, name)
return True
else:
print('输入错误!')
print(content, reason, name)
return False
testCMD = root.register(test)
e1 = Entry(root, textvariable=v, validate='focusout', validatecommand=(testCMD, '%P', '%v', '%W'))
e2 = Entry(root)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
root.title('Entry组件教学示例')
mainloop()
--------------------------
我的问题如下:
1、v = StringVar() 以及mainloop()中的()如果没有好像影响不大,测试过好像不会报错,是否可以不要?
2、return True和return False作用?必须的吗?没有的话有何影响?
3、小甲鱼教学视频中提到需要先“冷却”验证函数,这里冷却的意思是……?
4、我的运行后结果(见下图)与小甲鱼演示(见下下图)的不同(小甲鱼视频中显示的是.54328336),是什么原因呢?
---以下我的运行后结果:
---以下小甲鱼演示结果:
v = StringVar() 以及mainloop()中的()如果没有好像影响不大,测试过好像不会报错,是否可以不要?
而你没加 () 表示的是这个函数体,并没有调用这个函数,而你代码中没有调用 StringVar 对象中的方法,自然不会发生报错,若你在 test 中加入一行 v.get() 就会导致发生报错
mainloop() 方法允许程序循环执行,并进入等待和处理事件。而且 mainloop() 方法的作用会监听每个组件,当组件发生变化或触发事件时,会立即更新窗口
若你没加上括号就不会开始循环事件和监听窗口,窗口也就不被创建
return True和return False作用?必须的吗?没有的话有何影响?
validatecommand 返回 False 时,会再调用 invalidcommand 参数所赋值的方法,而若没有设置 invalidcommand 参数,那么就什么也不做
小甲鱼教学视频中提到需要先“冷却”验证函数,这里冷却的意思是……?
应该就是指激活函数时候需要的前置条件和后置条件,例如获取焦点,和失去焦点
我的运行后结果(见下图)与小甲鱼演示(见下下图)的不同(小甲鱼视频中显示的是.54328336),是什么原因呢?
这显示的是组件地址吧,你这里为什么不是显示组件名不太清楚,应该是不影响正常使用的
|
|