清風 发表于 2024-2-22 07:30:52

FishC 发表于 2024-2-22 07:23
抱歉,我之前给出的解决方案有误。问题出在调用`self.progressBar._animate()`方法时,它只会增加一次 ...

不能   还是没有滚动动作

FishC 发表于 2024-2-22 07:23:10

清風 发表于 2024-02-22 07:23
我把“self.progressBar._animate()”注释了,然后进 ...

抱歉,我之前给出的解决方案有误。问题出在调用`self.progressBar._animate()`方法时,它只会增加一次进度值,然后停止。要实现进度条滚动的效果,我们需要保持定时器的运行来触发`_animate`方法。以下是修改后的代码:

# 设置滚动条初始值为0
self.progressBar.setValue(0)
# 调用滚动条的方法
self.progressBar.scrollToCenter()
self.progressBar.startAnimation()

# 创建一个定时器
self.timer = QTimer(self)
self.timer.timeout.connect(self.updateProgress)
self.timer.start(100)# 设置定时器的间隔时间

def updateProgress(self):
    value = self.progressBar.value() + 1
    if value > self.progressBar.maximum():
      value = self.progressBar.minimum()# 如果超过最大值,则从最小值重新开始
    self.progressBar.setValue(value)

这样,进度条就会以每100毫秒增加一次进度值的方式滚动起来。请尝试一下,看是否能够正常工作。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

清風 发表于 2024-2-22 07:23:02

FishC 发表于 2024-2-22 07:18
问题出在对`self.progressBar._animate()`的调用上。在原来的代码中,`_animate`方法是由定时器触发的,通 ...

我把“self.progressBar._animate()”注释了,然后进度条一显示就是100%,没有任何滚动动作,并且还卡住了.....

FishC 发表于 2024-2-22 07:18:08

问题出在对`self.progressBar._animate()`的调用上。在原来的代码中,`_animate`方法是由定时器触发的,通过每隔一段时间自动增加进度值来实现滚动效果。但在新的代码中,直接调用`_animate`方法只会让进度值增加一次,并不能形成动画效果。

解决方法是将`self.progressBar._animate()`的调用移除,而是让定时器自动触发`_animate`方法。在原来的代码中,`startAnimation`方法已经启动了定时器,所以只需要保持定时器的运行即可:

# 设置滚动条初始值为0
self.progressBar.setValue(0)
# 调用滚动条的方法
self.progressBar.scrollToCenter()
self.progressBar.startAnimation()
# 判断滚动条是否达到 100%
print(progressBar.value())
input('...')
if self.progressBar.value() == 100:
    # 打开主窗口
    mainWindow = MainWindow()
    mainWindow.show()
    self.close()# 关闭当前窗口
else:
    event.ignore()# 忽略关闭事件

这样,进度条就可以正常滚动了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: 1 [2]
查看完整版本: 进度条调入问题?