gpt4 book ai didi

python - 如何用Signal控制QProgressBar

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

按下按钮开始 100 轮循环。使用 QLabel.setText(),我们从 clicked() 函数的范围内更新 self.label

除了更新 self.label,我们还想更新 progressbar。但由于 progressbar 是一个局部变量,我们无法从 onClick() 函数内部更新它。

enter image description here

import time

class ProgressBar(QtGui.QProgressBar):
def __init__(self, parent=None, total=20):
super(ProgressBar, self).__init__(parent=parent)

self.setMinimum(1)
self.setMaximum(105)
self.setTextVisible(True)

def set_to_value(self, value):
self.setValue(value)
QtGui.qApp.processEvents()

def closeEvent(self, event):
self._active=False


class Dialog(QtGui.QDialog):
def __init__(self):
super(QtGui.QDialog,self).__init__()

layout = QtGui.QVBoxLayout()
self.setLayout(layout)
self.label = QtGui.QLabel('idle...')
layout.addWidget(self.label)

progressbar = ProgressBar(self)
layout.addWidget(progressbar)

button = QtGui.QPushButton('Process')
button.clicked.connect(self.onClick)
layout.addWidget(button)

def onClick(self):
for i in range(101):
message = '...processing %s of 100'%i
self.label.setText(message)
QtGui.qApp.processEvents()
time.sleep(1)


if __name__ == '__main__':
app = QtGui.QApplication([])
dialog = Dialog()
dialog.resize(300, 100)
dialog.show()
app.exec_()

最佳答案

将进度条声明为:

self.progressbar = ProgressBar(self)

关于python - 如何用Signal控制QProgressBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37063664/

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