【问题标题】:How do I get my QProgressDialog to show up when I don't know how long it will take?当我不知道需要多长时间时,如何让我的 QProgressDialog 出现?
【发布时间】:2012-07-18 20:11:42
【问题描述】:

我正在使用subprocess.call 运行需要一段时间(>5 分钟)才能运行的命令提示符命令:

subprocess.call([command, param1, param2], cwd=cwdDir)

我想使用 QProgressDialog 来显示该命令正在运行。我这样做了:

        progressDialog = QProgressDialog("Executing...", "", 0, 0)
        progressDialog.setCancelButton(None)
        progressBar = QProgressBar(progressDialog)
        progressBar.setMinimum(0)
        progressBar.setMaximum(0)
        progressDialog.setBar(progressBar)
        progressDialog.show()
        subprocess.call([command, param1, param2], cwd=cwdDir)
        progressDialog.close()

当我运行我的程序时,会出现这样的结果:

过了一会儿,我的命令执行完毕,窗口关闭。如何获取它以便您可以在窗口中看到QProgressBar

【问题讨论】:

  • 我是否正确理解了您的问题 - 问题是进度对话框没有显示?
  • @GeorgSchölly 它没有完全显示出来。显示的是图片,对话框显示了,但里面的东西没有
  • 看起来subprocess.call() 是一个阻塞函数调用。如果您像这样阻止事件循环,Qt 将无法绘制任何内容(例如进度条)。

标签: python qt qt4 pyqt pyqt4


【解决方案1】:

您可以使用 Qthread,这样程序的事件循环就不会被阻塞。并通过计时器或从 subprocess.call 读取信息或仅在进程栏中显示忙碌图标来增加进度条的值。

【讨论】:

    猜你喜欢
    • 2014-12-10
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2011-03-10
    • 2013-06-17
    相关资源
    最近更新 更多