pyqt5创建新窗口

问题描述 投票:0回答:1

我正在尝试按下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()
python pyqt
1个回答
0
投票

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

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

另一种选择是在main中创建Mapeditor并点击显示它:

 # ...
 fieldScreen = Mapeditor()
 fieldE.clicked.connect(fieldScreen.show)
 # ...
© www.soinside.com 2019 - 2024. All rights reserved.