12-05-1395، 11:50 ب.ظ
من یه برنامهء بدون GUI دارم که بعضی وقتا نیاز داره یک dialog box ساده به کاربر نشون بده.
این برنامه توی یک حلقهء بینهایت مدام در حال اجراست. وقتی یک modal dialog نمایش داده میشه، اجرای برنامه تا وقتی که dialog box بسته نشه متوقف میشه. ولی من نمیخوام اینطور بشه چون برنامه مدام باید با برنامهء دیگری در حال تبادل ارتباط باشه.
خواستم dialog box روی ترد دیگری اجرا کنم که برنامه بلاک نشه، اما ظاهرا نمیشه و مشکل داره، یعنی دفعهء اول dialog box رو نشون میده اما دفعه های بعدی به مشکل میخوره.
با این نمونه کد مثلا میتونید تست کنید:
چطور میشه این مشکل رو حل کرد؟
این برنامه توی یک حلقهء بینهایت مدام در حال اجراست. وقتی یک modal dialog نمایش داده میشه، اجرای برنامه تا وقتی که dialog box بسته نشه متوقف میشه. ولی من نمیخوام اینطور بشه چون برنامه مدام باید با برنامهء دیگری در حال تبادل ارتباط باشه.
خواستم dialog box روی ترد دیگری اجرا کنم که برنامه بلاک نشه، اما ظاهرا نمیشه و مشکل داره، یعنی دفعهء اول dialog box رو نشون میده اما دفعه های بعدی به مشکل میخوره.
با این نمونه کد مثلا میتونید تست کنید:
import tkinter import tkinter.messagebox import threading import time def 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)از Python 3.3.4 روی ویندوز XP SP3 استفاده میکنم.
چطور میشه این مشکل رو حل کرد؟