【发布时间】:2017-07-18 03:31:21
【问题描述】:
由于我是初学者,请耐心等待我的问题。我在 pyqt 中实现进度条时遇到问题,我看到的所有示例并没有真正解释如何正确实现它,从这个 example 和这个 example 我在某种程度上使它工作但它仍然挂起。我有这个代码:
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(750, 450, 400, 200)
self.setFixedSize(self.size())
btn1 = QtGui.QPushButton("Convert", self)
btn1.move(210,171)
btn1.clicked.connect(self.progbar)
def progbar (self):
self.prog_win = QDialog()
self.prog_win.resize(400, 100)
self.prog_win.setFixedSize(self.prog_win.size())
self.prog_win.setWindowTitle("Processing request")
self.lbl = QLabel(self.prog_win)
self.lbl.setText("Please Wait. . .")
self.lbl.move(15,18)
self.progressBar = QtGui.QProgressBar(self.prog_win)
self.progressBar.resize(410, 25)
self.progressBar.move(15, 40)
self.progressBar.setRange(0,1)
self.myLongTask = TaskThread()
#I think this is where I am wrong
#because all of the answers here is very specific
#or just not for beginners
self.prog_win.show()
self.myLongTask.taskFinished.connect(self.onStart)
self.output_settings()
def onStart(self):
self.progressBar.setRange(0,0)
self.myLongTask.start()
def output_convert(self):
#very long process to convert a txt file to excel
#My Thread
class TaskThread(QtCore.QThread):
taskFinished = QtCore.pyqtSignal()
def run(self):
time.sleep(3)
self.taskFinished.emit()
def run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
app.exec_()
run()
这里的所有示例和帖子都对理解进度条的实现非常有帮助,但是所有示例都有针对特定问题的特定答案,我无法理解标准 pyqt 应用程序中进度条的实现。你们至少能给我指出正确的方向吗?将不胜感激。
【问题讨论】:
标签: python python-2.7 pyqt progress-bar pyqt4