当前位置: 首页 > 知识库问答 >
问题:

相当于PyQt应用程序的time.sleep

蒲深
2023-03-14

我不能在pyqt应用程序中使用time.sleep,因为这会冻结GUI线程,所以在此期间GUI将完全冻结。我一直在寻找处理这件事的方法。

我试图使用QTimer,但似乎它们需要链接到另一个函数?比如等十秒钟,然后运行一些函数。有没有办法让它等待,然后继续当前的功能?

def num(self):
    for i in range(1,999):
        print i
        #Add some sleep here

def testSleep(self):
    QtCore.QTimer.singleShot(2000, self.num)

共有3个答案

薛钧
2023-03-14

我相信您是在问如果num()需要几秒钟才能运行,如何保持GUI的响应性?您有两个选择:

>

  • 实例化QThread
呼延升
2023-03-14

也许可以做得更好,但您可以始终使用singleShot以延迟方式运行函数,使用lambda以参数方式运行函数。

import sys
from PyQt4 import QtGui, QtCore

#def num(self, i):
def num(i):
    print i
    i += 1
    if i < 999:
        # run again after 2000ms with argument
        QtCore.QTimer.singleShot(2000, lambda:num(i))
        #QtCore.QTimer.singleShot(2000, lambda:self.num(i))

app = QtGui.QApplication(sys.argv)

# run first time with start argument
num(1)
#QtCore.QTimer.singleShot(2000, lambda:num(1))

sys.exit(app.exec_())
程冥夜
2023-03-14

实际上,我正在寻找time.sleep替代使用pyqt没有使用任何线程概念。

我想出的解决办法是:

from PyQt4 import QtTest

QtTest.QTest.qWait(msecs)

这类似于时间。睡眠使GUI反应灵敏。

谢谢你的回答。

 类似资料:
  • 问题内容: 我正在编写一个servlet(特别是Scalatra)。在servlet中,我在目录中包含许多链接,该目录包含在每个页面中。我希望这些链接相对于应用程序基础。如果我使用诸如“ / foo”之类的链接,那么当从根目录(localhost:8080 /)提供servlet时一切正常,但是如果我从Jetty / Tomcat以及其他servlet(localhost:8080 / servl

  • 我正在将MongoDB查询从Javascript移动到Java。对象格式如下: Javascript查询包含以下部分: 我已经翻译了上面使用MongoDBJava驱动程序3 api,并具有以下内容: 我遇到的问题是,我似乎无法使用Mongodb Java驱动程序找到与$objectToArray等价的对象,后续的sum和min操作取决于dot对使用$objectToArray生成的k和v值的操作。

  • 问题内容: 我正在远程计算机上运行一个长Linux程序,但我想停止它,但是我的问题是,如果我使用kill命令,则该程序将退出而不保存结果。通常,完成该程序的工作是使用+ ,在这种情况下,该程序将保存结果,但是现在我不在运行会话的计算机中,因此无法按+ 。 我的问题是:有什么办法可以远程实现+的功能吗? 问题答案: 尝试: 基本上,默认情况下发送(中断)信号,而kill 默认情况下发送(终止)信号,

  • 问题内容: 我正在编写一个GUI应用程序,该应用程序通过Web连接定期检索数据。由于此检索需要一段时间,因此这会导致UI在检索过程中无响应(无法拆分成较小的部分)。这就是为什么我想将Web连接外包给一个单独的工作线程。 [是的,我知道,现在我有两个问题。] 无论如何,该应用程序使用PyQt4,所以我想知道更好的选择是:使用Qt的线程还是使用Python threading模块?各自的优点/缺点是什

  • 以下查询在mongo shell中完美运行。 我想用java编程实现同样的功能。我尝试了以下方法,但没有得到任何结果。

  • 问题内容: 我想将IPython qt控制台窗口小部件嵌入正在处理的PyQt应用程序中。下面提供的代码(并改编自(http://codingdict.com/questions/162023))针对IPython v0.12实现了此功能。然而,这在崩溃的IPython V0.13在该行有。注释掉此行将调出小部件,但不响应用户输入。 有谁知道如何实现IPython v0.13的等效功能? v0.13