2

GUI を作成しましたが、ある時点でフレームがメインフレームの子として開かれ、他のフレームを開いた関数は、このフレームが閉じられたときにのみ続行する必要があります。

これが機能しない理由がわかりません:

def ShowFrame(completeEvent):
    frame = MyFrame(self, completeEvent, ...)
    frame.Show()

self.completeEvent = threading.Event()
thread = threading.Thread(target=ShowFrame, args=(self.completeEvent,))
thread.start()
self.completeEvent.wait()

この例を実行するとメインフレームがフリーズし、「MyFrame」は表示されません。スレッドが開始されておらず、completeEvent を待っているか、開始されているが開始コマンドに到達していないようです...私が理解していないこと。通常、MyFrame が表示され、それを閉じると、completeEvent が設定され、mainFrame が続行されます。wx.CallAfterも試しましたが、それも役に立ちません...ダイアログやmakemodalなどを使用せずに、他のフレームが閉じられるまでメインフレームを待機させる方法を誰か教えてもらえますか?

4

1 に答える 1

0

別のスレッドで GUI 機能を実行することはできません。

私はこれを行うだけです:

class ParentFrame(wx.Frame):
    ...
    def show_child(self):
        frame = ChildFrame(self)
        frame.Bind(wx.EVT_CLOSE, self.on_child_closed)
        frame.Show()
    def on_child_closed(self, event):
        event.Skip()
        # do processing needed after child closes

class ChildFrame(wx.Frame):
    ...
于 2013-06-06T17:04:35.780 に答える