我希望在程序运行时同时启动该事件。
我想这个代码在程序运行时立即显示“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()
答案 0 :(得分:2)
在开始时显示“Hello”的最简单方法是将其移动到init方法中:
self.tc = wx.TextCtrl(panel, -1)
self.tc.WriteText("hello")
除此之外,我必须承认我并不完全明白你想做什么。程序执行和wx窗口显示之间的短暂延迟是很自然的,无法避免。
如果你想在你的应用程序中使用多线程,你应该阅读python线程系统。不幸的是,虽然线程可以使您的程序更优雅,但在大多数情况下会导致性能更差。 python解释器一次只能执行一个操作。这称为GIL - 全局解释器锁 - 即使您的应用程序中有多个线程,解释器也只会在线程之间切换但不能同时运行它们