0

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

我希望此代码在程序运行时立即显示“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()
4

1 回答 1

2

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

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

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

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

于 2012-10-13T15:40:20.023 回答