当前位置: 首页 > 面试题库 >

PyQt:app.exec_()停止运行以下所有代码

韦锦程
2023-03-14
问题内容

我有一个看起来像这样的代码:

app = QApplication(sys.argv)
self.interface = Interface()

# The figure
self.fig = self.interface.fig
self.ax = self.fig.add_subplot(111)

self.interface.show()
app.exec_()

print 'this is not printed'

问题是,一旦app.exec_()执行,在关闭弹出的窗口之前,什么都不会发生。

如何继续运行代码?


问题答案:

那是有意的。您要做的是在调用app.exec()之前使用信号/插槽,Qt类中的代码或生成线程。

信号和插槽是您与Qt交互的实际方式。基本上,信号是任何“事件”或自定义“事件”,并且可以将插槽视为“事件处理程序”。例如,当某人按下GUI上的按钮时,它会创建一个信号,以寻找与其连接的所有处理程序。您可以将一个,一个或多个插槽连接至每个信号(甚至可以多次连接同一插槽)!这是python中的一个很好的参考。

在Qt类中进行编码通常意味着创建可为您做有用工作的插槽。请记住,您不想将事件循环的时间保持太长,因此请生成新线程。

您可以使用的第三个选项是剥离其他线程。小心从线程与Qt进行交互,如果必须,我们必须使用信号和插槽。按照本SO中的建议实施线程。



 类似资料:
  • 我有一个问题,我无法通过谷歌搜索找到解决方案。 我有一个库,我正在使用它(不想编辑,除非真的有必要),它允许用户选择一个项目,然后调用我的自定义回调函数来修改该项目,然后继续使用它。 我需要在上面执行一些异步任务,这可能需要一些时间。这将创建一个竞争条件,因为当回调函数完成时,我的异步任务尚未完成,并且库继续其对项的工作。 如何等待我的两个异步任务完成,然后允许这个回调完成? 我唯一能想到的就是每

  • 我需要做的是能够停止从一个实现runnable的线程类运行的所有线程。这就是我的意思:这里是我的“线程”类的开始: 这就是我如何创建多个线程来执行此操作: m是要创建的线程数。这可能是从50到1000的任何地方。现在我需要做的是突然立刻停止所有的动作。我该怎么做呢?

  • 我的代码中有一个中断点,用来挂起所有的线程,但是为了测试一个bug,我想同时在该断点运行所有停止的线程,但是我无法找到它。我只能1乘1恢复线程,这对我的测试来说太慢了,有什么帮助吗?

  • 我们正在使用Activiti框架构建将处理特定消息的解耦业务流程。 BPMN有一个符号,它允许我们创建“并行”的任务流。但是是否有一种机制(网关)可以启动并行流,但一旦其中一个并行流完成,它就会杀死其他机制(网关)? 例如: 如果流B首先完成,则加入网关不得等待其他流完成,停止它们(这样它们就不需要执行到底),然后继续下一个流(在本例中,它是EndEvent)。 有什么想法如何实现吗? 编辑 找到

  • 问题内容: 这是执行程序类的方法: 在这里,它等待第二秒,但是当我运行代码时,它将引发异常: 我无法关闭中的并发线程破坏。这是我的代码流: 用Java执行程序类创建一个新线程来运行某些任务,即用 等待10秒以完成任务。 如果任务已完成,则可运行线程也将终止。 如果任务未在10秒内完成,则类应终止线程。 除了在最后一个场景中终止任务以外,其他所有操作都正常。我该怎么办? 问题答案: 该方法只是防止其

  • return执行之后,下面的语句不是都会忽略不执行的吗,为什么id重复之后,依然要输入姓名年龄住址,输入确实只返回数字1了,有没有什么方法能够在id重复时不用再输入姓名年龄住址 //1.添加学生 id需要唯一 有没有什么方法能够在id重复时不用再输入姓名年龄住址