2012-10-13 40 views
0

我希望在程序運行時同時啓動該事件。在GUI程序運行時立即啓動事件的情況下綁定了什麼事件?

我希望這個代碼在程序運行時立即顯示「Hello」。 此代碼不會以此方式運行。

如何更改活動?

import wx 

class MainWindow(wx.Frame): 

    def __init__(self, parent, id, title): 

     wx.Frame.__init__(self, parent, id, title, size=(380, 200)) 

     panel = wx.Panel(self, -1) 
     sizer = wx.BoxSizer() 
     self.tc = wx.TextCtrl(panel, -1) 
     self.tc.Bind(wx.EVT_TEXT, self.event) #problem caused here 
     sizer.Add(self.tc, 1, wx.EXPAND) 
     panel.SetSizer(sizer) 


     self.Centre() 
     self.Show(True) 

    def event(self, event): 
     self.tc.WriteText("Hello") 


if __name__=="__main__": 
    app = wx.App() 
    MainWindow(None, -1, "test.py") 
    app.MainLoop() 

回答

2

顯示「你好」在一開始將其移動到init方法最簡單的方法:

self.tc = wx.TextCtrl(panel, -1) 
self.tc.WriteText("hello") 

除此之外,我不得不承認,我完全不明白你想做什麼。程序執行和顯示wx窗口之間的短暫延遲很自然,無法避免。

如果你想在你的應用程序中使用多線程,你應該閱讀python線程系統。不幸的是,線程可以使你的程序更優雅,在大多數情況下會導致性能更差。 python解釋器一次只能執行一個操作。這被稱爲GIL - 全局解釋器鎖 - 即使您的應用程序中有多個線程,解釋器也只會在線程之間切換,但不會同時運行它們。

+0

我想使用多線程。謝謝。 – luxz

相關問題