Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 正在等待线程。事件,直到帧关闭_Python 2.7_Wxpython - Fatal编程技术网

Python 2.7 正在等待线程。事件,直到帧关闭

Python 2.7 正在等待线程。事件,直到帧关闭,python-2.7,wxpython,Python 2.7,Wxpython,我已经编写了一个GUI,在某个点上,一个框架作为大型机的子框架打开,而打开另一个框架的功能只有在这个框架关闭时才能继续 我只是不明白为什么这不起作用: def ShowFrame(completeEvent): frame = MyFrame(self, completeEvent, ...) frame.Show() self.completeEvent = threading.Event() thread = threading.Thread(target=ShowFram

我已经编写了一个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,或者线程已经启动,但没有到达start命令。。。我就是不明白。 通常情况下,MyFrame应该出现,当我关闭它时,completeEvent被设置,大型机继续运行。我也试过wx.CallAfter,但也没用。。。
有人能告诉我如何让大型机等待另一个框架关闭,而不使其成为对话框或使用MakeModel或类似的东西吗?

您不能在另一个线程上执行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):
    ...

当然,这是可能的。但必须有可能在某个点停止某个函数,并在发生其他事情后继续它。如果这不起作用,线程事件是什么?我“只”需要工作两个帧-在这种情况下-平行。。。我认为thread.thread正是我需要的
showmodel
wx。如果您不希望用户在使用子对话框时与父框架交互,则对话框
是实现这一点的一般方法。你到底想在这里做什么?对话框是没有选择的,因为框架非常复杂,并且是从其他框架类派生的。我试图做的是:在一个框架中启动一个函数,在此过程中,函数检查容器类对象中是否有太多的元素。如果是这样,暂停函数并启动另一个帧以选择其中一些元素,然后使用所选元素而不是所有元素恢复函数。。。类似于多选项或单选项对话框,但带有框架。