tkinter与threading的应用,'main thread is not in main loop'错误是什么意思?

按键精灵有一个插件ShowScrTXT,比如:
Call Plugin.Msg.ShowScrTXT(0,0,1024,100, "屏幕内容填写 ", "0000FF")
是在屏幕上范围位置(0,0,1024,100)进行输出内容【屏幕内容填写】
我想Python中实现这一功能,编了以下小程序进行测试:

import tkinter as tk
import threading
import time


def wait_destroy(showbox):
    for x in range(5):
        time.sleep(1)
    showbox.destroy()


def show_msg(msg):
    dialog = tk.Toplevel()
    dialog.overrideredirect(1)
    dialog.geometry("200x28+500+0")

    tk.Label(dialog, text=msg).pack()

    t = threading.Thread(target=wait_destroy, args=(dialog,))
    t.daemon = True
    t.start()


def test1():
    root = tk.Tk()
    tk.Button(root, text="RUN", command=lambda: show_msg(msg)).pack()
    root.mainloop()


def test2():
    show_msg(msg)
    for i in range(10):
        time.sleep(1)
        print('i=', i)


if __name__ == '__main__':
    msg = 'test'
    test1()

问题:
test1()能正常工作;
test2()不能正常工作,而且有如下错误:

img

这是为什么?百思不得其姐。