gpt4 book ai didi

python - PyQt Progressbar QThread 不能正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:54 29 4
gpt4 key购买 nike

我的代码有问题。我的计划是使用进度条显示 for 循环的进度。我的想法是使用 Qthread。我下面的代码以某种方式工作,但不是 100% 正确。进度条显示 for 循环的进度,但不是通过线程显示的,即如果我尝试单击更多,然后在 Stop 上单击一次,GUI 会卡住。我不是 QtCore 专家。有人可以帮助我并告诉我为什么它不能按照我希望的方式工作吗?

非常感谢!

from PyQt4 import QtGui, QtCore

#Progressbar
class MyCustomWidget(QtGui.QWidget):

def __init__(self, parent=None):
super(MyCustomWidget, self).__init__(parent)
layout = QtGui.QVBoxLayout(self)

self.progressBar = QtGui.QProgressBar(self)
self.progressBar.setRange(0,100)
layout.addWidget(self.progressBar)

#Update Progressbar
def onProgress(self, i):
self.progressBar.setValue(i)
if self.progressBar.value() >= self.progressBar.maximum():
self.close()

#Threading Class
class ASA(QtCore.QThread):
notifyProgress = QtCore.pyqtSignal(int)
def run(self, i):

#Sends the new information to the Update Function
self.notifyProgress.emit(i)
time.sleep(0.01)

#-----------------------------------------#
#Main Function
app = QtGui.QApplication(sys.argv)
bar = MyCustomWidget()
bar.show()

bar.asa = ASA()
bar.asa.notifyProgress.connect(bar.onProgress)
bar.asa.start()

#For loop for the progressbar
for i in range(105):
ASA.run(bar.asa, i)
time.sleep(0.5)

sys.exit(app.exec_())

最佳答案

循环需要在线程内部运行:

def run(self):
#Sends the new information to the Update Function
for i in range(105):
self.notifyProgress.emit(i)
time.sleep(0.01)

关于python - PyQt Progressbar QThread 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22291898/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com