当尝试按下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()
答案 0 :(得分:0)
函数完成执行后,将消除在函数中创建的变量,因此,即使显示了该窗口,也将立即关闭并消除该窗口。因此解决方案是延长其生命周期,以便可以将其创建为全局变量:
fieldScreen = None
def fieldeditorOPEN():
global fieldScreen
fieldScreen = Mapeditor()
fieldScreen.show()
另一个选择是在main中创建Mapeditor并单击以显示它:
# ...
fieldScreen = Mapeditor()
fieldE.clicked.connect(fieldScreen.show)
# ...