wxpython,逐个显示模式对话框

wxpython,逐个显示模式对话框,python,user-interface,wxpython,Python,User Interface,Wxpython,我有多线程wxpython应用程序,主GUI线程从其他线程接收通知,并在模式对话框下显示。我需要某种调度/排队,因此如果多个通知(来自其他线程)同时出现,对话框应该一个接一个出现。当每个通知到达时,将其添加到队列中(即列表),当每个对话框关闭时,从队列中删除该通知,如果该通知不是空的,则显示下一个,并倾听用户的抱怨 N.B.要特别小心,不要陷入我几次发现的那种情况,即单击“取消”按钮总是会导致另一个通知。另一个典型案例是错误窗口报告打开了太多错误窗口。多模式窗口对用户来说听起来是个糟糕的主意。它

我有多线程wxpython应用程序,主GUI线程从其他线程接收通知,并在模式对话框下显示。我需要某种调度/排队,因此如果多个通知(来自其他线程)同时出现,对话框应该一个接一个出现。

当每个通知到达时,将其添加到队列中(即列表),当每个对话框关闭时,从队列中删除该通知,如果该通知不是空的,则显示下一个,并倾听用户的抱怨


N.B.要特别小心,不要陷入我几次发现的那种情况,即单击“取消”按钮总是会导致另一个通知。另一个典型案例是错误窗口报告打开了太多错误窗口。

多模式窗口对用户来说听起来是个糟糕的主意。它们都会将焦点从应用程序移开。您确定不需要通知窗口吗?想法是,一次只发送一个通知(作为模式窗口或简单通知)。很少有通知需要用户交互,因此模态窗口在这里看起来很合适。模态窗口不适合这个原因。它们需要用户交互,并阻止你的应用程序处理输入,直到它被关闭。您需要的是一个无模式对话框。也许可以研究一下:
wx.notificationmessage
主要问题是如何逐个显示通知。通知可以是模式窗口、无模式窗口、气球提示,在我的情况下,这并不重要。在这里使用队列是个好主意。问题是,如何在主GUI循环中读取/侦听队列?我不想为此使用其他线程。请为您的线程设置一个事件处理程序,该处理程序将添加到队列中,并检查当前是否有可见的对话,如果没有,则设置对话,弹出队列顶部并显示对话。在通知对话框的Disclose处理程序中,重新检查队列,如果队列为空,则清除该标志,否则从队列中弹出顶部请求并显示它。