要实现关闭HuanYing窗体和打开main窗体,可以在滚动条的value达到100%时触发相应的操作。具体的步骤如下:
1. 在HuanYing.py文件中,将`showSuccessMessage`函数修改为如下代码:
def showSuccessMessage(self):
msgBox = QtWidgets.QMessageBox()
msgBox.setText("登录成功!欢迎使用本报表统计系统!")
msgBox.setWindowTitle("成功")
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("success.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
msgBox.setWindowIcon(icon)
msgBox.exec()
self.progressBar.setValue(0) # 将滚动条的值设置为0
self.progressBar.show() # 显示滚动条
# 判断滚动条的值是否为100,如果是则关闭HuanYing窗体并打开main窗体
if self.progressBar.value() == 100:
self.close()
mainForm = MainForm() # 创建MainForm实例
mainForm.show() # 显示MainForm窗体
2. 在CustomProgressBar.py文件中,在CustomProgressBar类定义中添加一个信号`valueChanged`:
from PyQt6.QtCore import pyqtSignal
class CustomProgressBar(QProgressBar):
# 添加信号
valueChanged = pyqtSignal(int)
def __init__(self, parent=None):
super().__init__(parent)
...
3. 在CustomProgressBar.py文件中,将`_animate`方法修改为:
def _animate(self):
value = self.value() + 2
if value > self.maximum():
value = value % self.maximum()
self.setValue(value)
# 发射信号
self.valueChanged.emit(value)
if value == 100:
self.timer.stop()
4. 最后,在HuanYing.py文件中,在HuanYingWindow类的`initUI`方法中,连接滚动条的`valueChanged`信号和自定义的`updateProgressBarValue`槽函数。代码如下:
def initUI(self):
layout = QVBoxLayout(self)
progressBar = CustomProgressBar()
layout.addWidget(progressBar)
progressBar.scrollToCenter()
progressBar.startAnimation()
# 连接信号和槽函数
progressBar.valueChanged.connect(self.updateProgressBarValue)
self.setLayout(layout)
def updateProgressBarValue(self, value):
# 判断滚动条的值是否为100,如果是则关闭HuanYing窗体并打开main窗体
if value == 100:
self.close()
mainForm = MainForm() # 创建MainForm实例
mainForm.show() # 显示MainForm窗体
这样,当滚动条的值为100%时,会触发信号`valueChanged`,槽函数`updateProgressBarValue`会判断滚动条的值是否为100,从而关闭HuanYing窗体并打开main窗体。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |