在非主线程中显示对话框

时间:2016-08-04 12:44:43

标签: python multithreading tkinter modal-dialog

我有一个非GUI程序,有时需要向用户显示一个对话框。 问题是我的程序在一个无限循环中运行,当我在这个循环中显示一个对话框时,程序的执行停止,直到对话框被解除,这是不需要的,因为我的程序循环是一个必须始终响应的后台服务。所以我尝试在另一个线程中运行显示代码的对话框,但是它无法正常工作:对话框只显示一次/第一次,后续调用没有显示任何内容。

我该如何解决这个问题?

这是您测试情况的​​示例代码:

import tkinter
import tkinter.messagebox
import threading
import time

def messageBox():
    root=tkinter.Tk()
    root.withdraw()
    tkinter.messagebox.showinfo('dialog', 'test')
    root.destroy()

while True:
    threading.Thread(target=messageBox).start()
    time.sleep(3)    

我在Windows XP上使用Python 3.3.4

1 个答案:

答案 0 :(得分:1)

我的建议是让你的对话框成为一个单独的脚本,然后使用子进程模块在一个单独的进程中显示对话框。