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 インタープリターは、一度に 1 つの操作しか実行できません。これは GIL (グローバル インタープリター ロック) と呼ばれ、アプリケーションに複数のスレッドがある場合でも、インタープリターはスレッド間を切り替えるだけで、それらを同時に実行することはありません。

于 2012-10-13T15:40:20.023 に答える