Tkinter.after método de congelar ventana?

Tengo un cliente de chat simple con el que estaba intentando trabajarTkinter como la interfaz. Mi problema es que al ejecutar elmainloop con.after para la entrada / salida de chat, la ventana se bloquea y bloquea hasta que se recibe otro mensaje.

class Client(Frame):

    def __init__(self, **kwargs):
        Frame.__init__(self, Tk())
        self.pack()

        self.lb = Listbox(self, width=100, height=30)
        self.lb.pack()

        self.show_data = self.lb.after(1000, self.chat_handle)

        self.entry = Entry(self)
        self.entry.bind('<Return>', self.input_handle)
        self.entry.pack(side=BOTTOM, fill=X)

    def input_handle(self, event):
        msg = self.entry.get()
        self.entry.delete(0, 'end')
        new_msg = 'privmsg %s :' % self.channel + msg + '\r\n'
        self.client.sendall(new_msg)
        self.lb.insert(END, self.nick + ' | ' + msg)

    def chat_handle(self):
        try:
            self.data = self.client.recvfrom(1024)
        except socket.error:
            self.lb.insert(END, "Bad Connection!")
            return
        if self.data and len(self.data[0]) > 0:
            self.lb.insert(END, self.data[0])
        elif self.data and len(self.data[0]) == 0:
            self.lb.insert(END, "Connection Dropped!")
            return
        self.show_data = self.lb.after(1000, self.chat_handle)

Este bloque de código se acorta, pero muestra las partes involucradas de los recursos. losEntry El widget dejará de responder por períodos prolongados, mientras que.after se llama y no responde hasta que se recibe un mensaje.

Cuando elEntry el widget vuelve a responder, el campo de entrada tiene todos los datos que se ingresaron, pero no veré los cambios durante el tiempo "congelado". Lo mismo ocurre con elListbox widget

Si alguien pudiera arrojar alguna luz sobre por qué esto es exactamente o señalar si me olvido de usar un método aquí, sería muy apreciado.

EDIT: después de un poco más de investigación, se parece a lasocket los datos se bloquean cada vez que su llamada y la ventana se congelan durante este tiempo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta