我在写一个程序,它有两个不同的部分,我们称之为sub1和sub2。当我最初运行我的程序时,sub1显示,我在后台加载sub2,但不显示它。我在sub1中有一个菜单操作,它允许您切换到sub2,sub2中有一个菜单操作允许您切换回sub1。我遇到的问题是当我试图从sub2切换回sub1时。从sub1到sub2工作正常;sub1被隐藏,sub2被显示。但是,当再次尝试显示sub1时,sub2不会隐藏。我对PyQt和Python都是新手,所以我还不知道所有的复杂性。所以,我使用的方法只是我通过反复试验得出的结论,决不需要这样。下面是简化代码。在#mass module
class MASS(PyQt5.QtWidgets.QMainWindow, massUi.Ui_MainWindow):
def __init__(self):
super(MASS, self).__init__()
self.actionSwitchToCompEval.triggered.connect(self.switchToCompEval)
def switchToCompEval(self):
massForm = main.massForm
massForm.hide()
compForm = main.compForm
compForm.show()
def showMass(self):
main(1)
def main(initiate=None):
if initiate == None:
main.app = PyQt5.QtWidgets.QApplication(sys.argv)
main.massForm = MASS()
main.compForm = CompEval.CompEval()
main.massForm.show()
main.app.exec_()
elif initiate == 1:
main.massForm = MASS()
main.compForm = CompEval.CompEval()
main.compForm.hide()
main.massForm.show()
elif initiate == 2:
pass
if __name__ == '__main__':
main()
#comp module
class CompEval(PyQt5.QtWidgets.QMainWindow, compEvalUi.Ui_MainWindow):
def __init__(self):
super(CompEval, self).__init__()
self.actionSwitchToMASS.triggered.connect(self.switchToMass)
def switchToMass(self):
mass.MASS().showMass()
def main():
form = CompEval()
form.show()
在switchToCompEval函数中,引用主.massForm以及主控形状变量,但是当我试图从sub2(comp)回到sub1(mass)时,我得到一个错误:函数不包含这个变量,这对我来说很奇怪。我知道,目前我的设置有几个方面是奇怪的,远远不是理想的,所以任何建议都将不胜感激。谢谢。在