Проблема в том, что в функции pr -> printing происходят достаточно долгие вычисления, и в этот момент окно виснет и не отвечает, а вывод в поле текста происходит только после окончания основного процесса вычисления. Как правильно реализуются потоки? Использую Треды, но это не помогает в данном примере, все равно виснет окно, как сделать вычисления отдельными от функции mainloop() здесь? 
#!/usr/bin/env python
import os
import threading
import time
from tkinter import *
import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext  
class MainWindow(tk.Frame):
    def __init__(self, root):
        super().__init__(root)
        self.init_main()
    def init_main(self):
        lb_log = Label(text=u"логин ")
        lb_log .pack()
        ent_value_log = Entry(width=40)
        ent_value_log .pack()
        lb_pass = Label(text=u"пароль ")
        lb_pass.pack()
        ent_value_pass = Entry(width=40)
        ent_value_pass.pack()
        btn_print = ttk.Button(text='print', command=lambda: self.printing(ent_value_log.get(), ent_value_pass.get()))
        btn_print .place(x=340, y=20)
        self.console = scrolledtext.ScrolledText(state='disable')
        self.console.pack(pady=15)
    def insert_to_console(self, text):
        self.console.configure(state='normal')  # enable insert
        self.console.insert(END, text)
        self.console.yview(END)  # autoscroll
        self.console.configure(state='disabled')
    def pr(self, login, password):
        self.insert_to_console(login + ' ' + password)
        time.sleep(5)
        self.insert_to_console(login + ' ' + password)
        time.sleep(5)
    def printing(self, login, password):
        pycrypt = threading.Thread(target=self.pr(login, password))
        pycrypt.start()
    def run_app():
        root = tk.Tk()
        app = MainWindow(root)
        root.title("palevo")
        root.geometry("420x400")
        root.mainloop()
zv = MainWindow
zv.run_app()