显示信息警报时,Python tkinter窗口失去焦点

Rob*_*ney -1 python user-interface tkinter python-2.7

我正在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
Run Code Online (Sandbox Code Playgroud)

初始画面

注册画面

在此处输入图片说明

Bry*_*ley 5

使消息框成为第二个窗口的子级,而不是根窗口的隐式子级。您可以通过parent在创建消息框时设置属性来执行此操作。

例如:

new_window = Toplevel()
...
tkMessageBox.showinfo(parent=new_window, title="About", message="...")
Run Code Online (Sandbox Code Playgroud)