pyqt5创建新窗口

时间:2019-03-08 15:10:39

标签: python pyqt

当尝试按下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()

1 个答案:

答案 0 :(得分:0)

函数完成执行后,将消除在函数中创建的变量,因此,即使显示了该窗口,也将立即关闭并消除该窗口。因此解决方案是延长其生命周期,以便可以将其创建为全局变量:

fieldScreen = None
def fieldeditorOPEN():
   global fieldScreen
   fieldScreen = Mapeditor()
   fieldScreen.show()

另一个选择是在main中创建Mapeditor并单击以显示它:

 # ...
 fieldScreen = Mapeditor()
 fieldE.clicked.connect(fieldScreen.show)
 # ...