我正在尝试按下fieldE按钮时创建新窗口,但它没有发生。 Mapeditor()类正在工作,所以当我调用fieldE.clicked.connection -function时,我认为问题符合要求。有小费吗?
def startGpressed(name):
print(name)
def fieldeditorOPEN():
fieldScreen = Mapeditor()
def main():
app = QApplication(sys.argv)
ex = App()
buttons = ex.initUI()
startG = buttons[0]
fieldE = buttons[1]
startG.clicked.connect(lambda:(startGpressed("Game starting")))
fieldE.clicked.connect(partial(fieldeditorOPEN))
startG.show()
fieldE.show()
sys.exit(app.exec_())
main()
当函数完成执行时,函数中创建的变量将被消除,因此即使显示窗口,它也会被关闭并立即消除。因此,解决方案是延长其生命周期,以便可以将其创建为全局变量:
fieldScreen = None
def fieldeditorOPEN():
global fieldScreen
fieldScreen = Mapeditor()
fieldScreen.show()
另一种选择是在main中创建Mapeditor并点击显示它:
# ...
fieldScreen = Mapeditor()
fieldE.clicked.connect(fieldScreen.show)
# ...