我想用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