【发布时间】:2018-06-27 19:56:31
【问题描述】:
我正在编写一个包含两个不同部分的程序——我们称它们为 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 函数中,引用 main.massForm 和 main.compForm 变量似乎可以正常工作,但是当我尝试从 sub2(comp) 回到 sub1(mass) 时,我收到一个错误,该函数没有包含那个变量,这对我来说似乎很奇怪。我知道我目前如何进行此设置的几个方面很奇怪,而且远非理想,因此任何建议都将不胜感激。谢谢。
【问题讨论】:
-
这不是做同样的事情吗?