我正在 tkinter (python) 中构建一个基本的登录系统,当用户输入详细信息进行注册时,我想显示一个 tkmessagebox,告诉他们输入中是否有任何错误。
当 GUI 最初加载时,系统会询问他们是否要登录或注册(工作正常)。假设用户单击“注册”,他们将被带到第二个屏幕以输入其详细信息(也可以正常工作)。从这里开始,当他们输入详细信息并单击注册时,如果显示错误警报,GUI 的注册部分将失去焦点并消失在 GUI 的第一部分后面,用户将选择转到注册屏幕。
有什么方法可以防止我的子窗口在显示警报时失去焦点?
def registerCheck(self):
#print('Username: '+ str(self.UN.get()))
errorList = ''
if self.UN.get() == '':
errorList += 'Username cannot be empty\n'
if len(self.PW.get()) < 4:
errorList += 'Password must be more than 4 characters long\n'
if self.PW.get() != self.PWCF.get():
errorList += 'Passwords do not match\n'
if len(self.Email.get()) < 5:
errorList += 'Email is not valid\n'
if errorList == '':
tkMessageBox.showinfo(title="About", message="No Errors Found")
else:
tkMessageBox.showerror(title="Errors Found!", message=errorList)
return
使消息框成为第二个窗口的子窗口,而不是根窗口的隐式子窗口。 您可以通过在创建消息框时设置
parent
属性来完成此操作。
例如:
new_window = Toplevel()
...
tkMessageBox.showinfo(parent=new_window, title="About", message="...")
尝试这个修复.....messagebox.showinfo(parent=self.root, title='显示原因', message='添加销售退货原因')