gpt4 book ai didi

python - 设置值后pyQt进度对话框栏保持为空

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:39 26 4
gpt4 key购买 nike

我正在使用带有“脉冲”进度条的进度对话框来显示应用程序正在忙于计算。我想在它完成(收到完成信号)后立即显示一个实心条,以指示该过程已完成。我已经尝试了类似问题中给出的所有选项(更改值、设置最小/最大值、范围、processEvents 等),但是当过程完成时进度条仍然为空。

下面是一个简单的工作示例。如果在您的机器上花费的时间太少或太多,您可以在运行子例程中更改结束编号。

from PyQt4 import QtCore, QtGui
import sys

class TestDialog(QtGui.QDialog):
def __init__(self,parent=None):
super(TestDialog,self).__init__()
self.resize(50, 50)
self.Button = QtGui.QPushButton(self)
self.Button.clicked.connect(self.Run_Something)
self.Button.setText("Run")

def Run_Something(self):
self.progress = QtGui.QProgressDialog("Running","Cancel",0,0,self)
self.progress.setWindowTitle('Please wait...')
self.progress.setWindowModality(QtCore.Qt.WindowModal)
self.progress.canceled.connect(self.progress.close)
self.progress.show()

self.TT = Test_Thread()
self.TT.finished.connect(self.TT_Finished)
self.progress.canceled.connect(self.progress.close)
self.progress.show()
self.TT.start()

def TT_Finished(self):
self.progress.setLabelText("Analysis finished")
self.progress.setRange(0,1)
self.progress.setValue(1)
self.progress.setCancelButtonText("Close")
self.progress.canceled.connect(self.progress.close)


class Test_Thread(QtCore.QThread):
finished = QtCore.pyqtSignal()

def __init__(self):
QtCore.QThread.__init__(self)

def run(self):
end = 10**7
start = 0

while start < end:
start += 1

self.finished.emit()
self.terminate()

if __name__=='__main__':
app = QtGui.QApplication(sys.argv)
Test = TestDialog()
Test.show()
sys.exit(app.exec_())

感谢任何帮助。谢谢!

最佳答案

首先,快乐第 5000 个标记为“pyqt”的问题 :P

关于你的问题。我不知道为什么要这样做,但这里有一个“变通办法”。

如果您在显示之前将 QProgressDialog 的值设置为其最大值(尽管最大值在此阶段设置为 0),那么您的代码可以正常工作。

例如

self.progress.setValue(1)
self.progress.show()

奇怪的是,如果您不使用上述“修复”而是将范围设置为 0 到 2 之间,那么您的代码会在线程末尾成功将其设置为 50%。但是,尝试将其设置为 100% (setValue(2)) 会导致您观察到的相同错误行为。

因此,希望这能帮助您继续前进。尽管如此,它仍然让我感到困惑,为什么它会发生。我认为这可能是一个错误。

关于python - 设置值后pyQt进度对话框栏保持为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29367768/

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