如何解决tkinter-如果错误未解决,如何不处理其他代码-messagebox.showerror
我有一个tkinter应用程序,其中有标签,条目和按钮。每当我单击按钮时,条目就会传递到一个函数,在此函数中它们会根据格式进行验证。
例如-
两个字段-员工姓名,员工ID
现在,我希望检查用户名是否以“ EMP”开头。为此,我做了一些功能(例如检查是否为字母数字等)。如果用户名不是以“ EMP”开头,那么我现在正在显示这样的错误框
def tracking_images(self,emp_id,emp_name):
emp_id,emp_name = emp_id.get(),emp_name.get()
if len(emp_id) == 0:
tk.messageBox.showerror("Field error","Employee ID cannot be empty")
elif len(emp_name) == 0:
tk.messageBox.showerror("Field error","Employee name cannot be empty")
if not ValidationConditions().first_three_chars(emp_id):
tk.messageBox.showerror("Field error","Employee ID should start with EMP")
........
........
#Some more code which I don't want user to have until he/she fixes the error from above checks. <-------
现在,在用户单击任何提示后的“确定”之后,仍然可以访问我不希望用户访问的代码。
解决方法
您可以以do-while
的方式进行处理(即使pyhton在语义上也不支持)
伪代码如下:
while True:
ask the name
if the name passes the checks break out of the loop
show errors
code to go to when the name is valid
编辑:我忘了注意,如下所述,这必须在额外的线程中完成。
另一种可行的方法是将对话框置于一种方法中,该方法可以在名称无效时重新调用自身。
但是由于我现在正在上下班,所以我从未尝试过并且无法测试它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。