循环时如何更新进度条?(在不同的窗口中)

2024-04-24 22:34:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的社区,我开始编程。我的问题基本上是标题中描述的问题,代码如下:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_win_1(object):

    def setupUi(self, win_1):
        win_1.setObjectName("win_1")
        win_1.resize(500, 100)
        self.pushButton = QtWidgets.QPushButton(win_1)
        self.pushButton.setGeometry(QtCore.QRect(210, 40, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.retranslateUi(win_1)
        QtCore.QMetaObject.connectSlotsByName(win_1)

        self.pushButton.clicked.connect(self.exec_win_2)

    def retranslateUi(self, win_1):
        _translate = QtCore.QCoreApplication.translate
        win_1.setWindowTitle(_translate("win_1", "Win_1"))
        self.pushButton.setText(_translate("win_1", "Run"))

    def exec_win_2(self):
        num = 0
        per = 0
        win_2.show()
        while num < 10000000:
            num += 1
            if (num/100000).is_integer():
                per += 1
                ui2.progressBar.setValue(per)
        win_2.close()


class Ui_win_2(object):

    def setupUi(self, win_2):

        win_2.setObjectName("win_2")
        win_2.resize(400, 100)
        self.buttonBox = QtWidgets.QDialogButtonBox(win_2)
        self.buttonBox.setGeometry(QtCore.QRect(20, 60, 341, 32))
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.progressBar = QtWidgets.QProgressBar(win_2)
        self.progressBar.setGeometry(QtCore.QRect(20, 20, 361, 23))
        self.progressBar.setObjectName("progressBar")
        self.retranslateUi(win_2)
        self.buttonBox.accepted.connect(win_2.accept)
        self.buttonBox.rejected.connect(win_2.reject)
        QtCore.QMetaObject.connectSlotsByName(win_2)

    def retranslateUi(self, win_2):

        _translate = QtCore.QCoreApplication.translate
        win_2.setWindowTitle(_translate("win_2", "Win_2"))

if __name__ == "__main__":

    import sys
    app = QtWidgets.QApplication(sys.argv)
    win_1 = QtWidgets.QDialog()
    win_2 = QtWidgets.QDialog()
    ui = Ui_win_1()
    ui.setupUi(win_1)
    ui2 = Ui_win_2()
    ui2.setupUi(win_2)
    win_1.show()
    sys.exit(app.exec_())

重点是:

def exec_win_2(self):
        num = 0
        per = 0
        win_2.show()
        while num < 10000000:
            num += 1
            if (num/100000).is_integer():
                per += 1
                ui2.progressBar.setValue(per)
        win_2.close()

我希望“win_2”窗口在您单击“run”按钮并随着循环的实时进行而更新进度时打开,我该如何做到这一点?你知道吗

事先非常感谢。你知道吗


Tags: selfuidefwinnumtranslateperprogressbar