我想用wxPython实现Observer设计模式。 我有一个建模应用程序,在后台计算海量数据。有时我想在GUI中显示模型的输出---这只是一个不同颜色的方格。其他时候我需要做计算而不显示GUI。wxPython中的观察者模式
观察者模式的好处是,你可以通过添加或删除一行代码,像
self.observers.append(MyWxGui())
或类似的或不是一个GUI插件。 现在,要做到这一点,我需要我的计算在一个线程上运行,而wx GUI将运行在另一个线程上。 我试图与wxPython的这样做,但我总是得到一个致命I/O错误:
python: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.0.
我读了在wxPython中多线程教程,如http://wiki.wxpython.org/LongRunningTasks,但它们都具有主循环()在主线程中运行而不是在辅助线程中长时间运行的任务,而我需要的是相反的方式。这是因为如果我在主线程中拥有Mainloop(),程序会挂起等待GUI中的某个事件,而不是继续计算。
我还看到我无法在子线程中操作DeviceDC或PaintDC等设备上下文(DC),但我在同一线程中运行了整个wx代码。
Mainloop()和所有的wx GUI能够在它自己的线程中运行吗?它不是主应用程序的线程吗?
在Ubuntu 10.10 maverick上运行wxPython 2.8.11.0。
您是否知道(wx)python中的observer模式的实现(非线程)?如下所述,Pubsub是全球的发布者订阅者的事情,我还没有找到实现的观察者模式。 – virtualnobi 2013-03-27 11:25:32