今天在做项目的时候,遇到一个问题
问题描述
因为之前在密码输入栏做了一个回车实现登录的功能,导致出现了一个小问题,在提示弹窗出现的时候按回车(相当于按了YES)这时候操作焦点还在密码输入栏,就会无限出现错误提示弹窗,只有鼠标点击YES才能正常关闭弹窗。
解决方法
于是尝试在出现弹窗的时候移动操作焦点,类似于在旁边点一下鼠标,最后这个方法只能实现把焦点移动到下一个(也就是用户名输入栏),不过也解决了这个问题。 实现十分简单,只需在调用弹窗代码附近加一行event.EventObject.Navigate() ,操作焦点便会移动到用户名输入栏,用户名输入栏是没有绑定登录事件的,因此解决了这个问题。不过应该还有更好的办法实现此需求,日后学习到再来补充,也欢迎大家指正。
def LoginButton(self, event):
op = Sql_operation("login_users")
np = op.FindAll("users")
print(np)
login_sign = 0
for i in np:
if (i[1] == self.user_name.GetValue()) and (i[2] == self.user_password.GetValue()):
login_sign = 1
break
if login_sign == 0:
print("用户名或密码错误!")
event.EventObject.Navigate()
self.show_message(word="密码错误")
elif login_sign == 1:
print("登录成功!")
operation = UserOperation(None, title="学生信息管理系统", size=(1024, 668))
operation.Show()
self.Close(True)
|