PyQt5加载微调器在发布请求时停止

时间:2017-11-17 21:54:56

标签: python pyqt python-requests pyqt4 pyqt5

我正在使用此处找到的QtWaitingSpinner:https://github.com/snowwlex/QtWaitingSpinner。您可以像这样创建和启动微调器:spinner = QtWaitingSpinner(self); spinner.start()。不幸的是,当我尝试从我的GUI发出POST请求时,微调器停止,直到返回响应。因此,我根本看不到旋转器,或者如果我过早地启动旋转器,它会在等待响应时停止旋转。我想我将不得不使用某种异步方法,如QThread或asyncio,但目前还不清楚解决这个问题的最佳方法是什么。如果有人能告诉我处理它的最佳方法,我将不胜感激。这是我正在做的简化版本:

class Obj(QDialog):
    # some button calls this function when pressed
    def submit(self):
        #start spinner
        spinner = QtWaitingSpinner(self)
        spinner.start()

        # post some data to some url, spinner should spin
        r = requests.post('some_url.com', json=some_data)

        # stop spinner
        spinner.stop()

1 个答案:

答案 0 :(得分:1)

Array ( [0] => 510 [1] => 984 [2] => 1045 [3] => 2068 [4] => 1054 [5] => 673 ) 的问题是阻止了Qt循环,因此像requests这样的元素不起作用。一种解决方案是在另一个线程上运行该任务,一种简单的方法是使用QTimerQRunnable

QThreadPool

可以在以下link

中找到完整的示例