Обновление элемента Python GUI из Qthread

Так что я знаю, что есть много сообщений об обновлении элементов в графическом интерфейсе с помощью Qthread. Я сделал все возможное, чтобы пройти через это, но все еще есть вопрос.

Я пытаюсь создать графический интерфейс, который запускает метод при нажатии кнопки, а затем этот метод запускает новый поток. Затем этот поток посылает сигнал в GUI для изменения значения элемента GUI:

from PySide import QtCore, QtGui
import time

class WorkerThread(QtCore.QThread):
    updateProgress = QtCore.Signal(int)
    def __init__(self, countto):
        QtCore.QThread.__init__(self)
        self.countto = countto

    def run(self):
        i = 0
        while i <= self.countto:
            print(self.countto)
            self.updateProgress.emit(i)
            time.sleep(1)
            i += 1


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.progressBar = QtGui.QProgressBar(Dialog)
        self.progressBar.setGeometry(QtCore.QRect(110, 120, 118, 23))
        self.progressBar.setProperty("value", 0)
        self.progressBar.setObjectName("progressBar")
        self.lineEdit = QtGui.QLineEdit(Dialog)
        self.lineEdit.setGeometry(QtCore.QRect(50, 60, 113, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.pushButton = QtGui.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(190, 60, 75, 23))
        self.pushButton.setObjectName("pushButton")

        self.wt = WorkerThread(int)
        self.wt.updateProgress.connect(self.setProgress)

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
        self.pushButton.setText(QtGui.QApplication.translate("Dialog", "PushButton", None, QtGui.QApplication.UnicodeUTF8))
        self.pushButton.connect(QtCore.SIGNAL('clicked()'), self.get_time)

    def setProgress(self, progress):
        self.progressBar.setValue(progress)

    def get_time(self):
        countto = self.lineEdit.text()
        countto = int(countto)
        print(countto)
        self.wt = WorkerThread(countto)
        self.wt.start()
        q = 0
        while q < 5:
            print(countto+2)
            time.sleep(2)
            q += 1


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Dialog = QtGui.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

Этот графический интерфейс должен запускать основной поток и производить произвольный подсчет, чтобы убедиться, что он работает. Затем второй поток также выполняет произвольный подсчет, чтобы убедиться, что он работает, а затем пытается выдать сигнал в графический интерфейс для обновленияprogressbar элемент. Я знаю, что оба потока работают, но я думаю, что у меня проблема с получением сигнала, потому чтоprogressbar не обновляется Я попробовал несколько вещей, но теперь я застрял. Я думаю, что проблема возникает, когда я пытаюсь передать значение потоку и когда я пытаюсь создать экземпляр потока в методе `setupUi ', только чтобы переопределить его позже.

Может ли кто-нибудь помочь и объяснить мою ошибку в мышлении? Я пытаюсь обернуть голову, используя сигналы и слоты с потоками, поэтому объяснение было бы здорово.

Ответы на вопрос(1)

Ваш ответ на вопрос