من یه برنامهء بدون GUI دارم که بعضی وقتا نیاز داره یک dialog box ساده به کاربر نشون بده.
این برنامه توی یک حلقهء بینهایت مدام در حال اجراست. وقتی یک modal dialog نمایش داده میشه، اجرای برنامه تا وقتی که dialog box بسته نشه متوقف میشه. ولی من نمیخوام اینطور بشه چون برنامه مدام باید با برنامهء دیگری در حال تبادل ارتباط باشه.
خواستم dialog box روی ترد دیگری اجرا کنم که برنامه بلاک نشه، اما ظاهرا نمیشه و مشکل داره، یعنی دفعهء اول dialog box رو نشون میده اما دفعه های بعدی به مشکل میخوره.از Python 3.3.4 روی ویندوز XP SP3 استفاده میکنم.
این برنامه توی یک حلقهء بینهایت مدام در حال اجراست. وقتی یک modal dialog نمایش داده میشه، اجرای برنامه تا وقتی که dialog box بسته نشه متوقف میشه. ولی من نمیخوام اینطور بشه چون برنامه مدام باید با برنامهء دیگری در حال تبادل ارتباط باشه.
خواستم dialog box روی ترد دیگری اجرا کنم که برنامه بلاک نشه، اما ظاهرا نمیشه و مشکل داره، یعنی دفعهء اول dialog box رو نشون میده اما دفعه های بعدی به مشکل میخوره.
با این نمونه کد مثلا میتونید تست کنید:
کد:
import tkinter
import tkinter.messagebox
import threading
import timedef messageBox():
root=tkinter.Tk()
root.withdraw()
tkinter.messagebox.showinfo('', 'test')
root.destroy()
i=0
while True:
i+=1
threading.Thread(target=messageBox).start()
time.sleep(5)
چطور میشه این مشکل رو حل کرد؟