在GUI程序运行时,事件立即启动的情况下,什么事件绑定?

时间:2012-10-13 15:12:35

标签: python wxpython

我希望在程序运行时同时启动该事件。

我想这个代码在程序运行时立即显示“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()

1 个答案:

答案 0 :(得分:2)

在开始时显示“Hello”的最简单方法是将其移动到init方法中:

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

除此之外,我必须承认我并不完全明白你想做什么。程序执行和wx窗口显示之间的短暂延迟是很自然的,无法避免。

如果你想在你的应用程序中使用多线程,你应该阅读python线程系统。不幸的是,虽然线程可以使您的程序更优雅,但在大多数情况下会导致性能更差。 python解释器一次只能执行一个操作。这称为GIL - 全局解释器锁 - 即使您的应用程序中有多个线程,解释器也只会在线程之间切换但不能同时运行它们