pyqt5 创建新窗口

我正在尝试在按下 fieldE 按钮时创建新窗口,但它没有发生。Mapeditor() 类正在工作,所以我认为当我调用 fieldE.clicked.connection 函数时问题是一致的。有小费吗?


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()


墨色风雨
浏览 142回答 1
1回答

慕码人8056858

函数中创建的变量会在函数执行完毕后被清除,因此即使显示窗口,也会立即关闭并清除。所以解决办法是延长它的生命周期,使其可以创建为全局变量:fieldScreen = Nonedef fieldeditorOPEN():   global fieldScreen   fieldScreen = Mapeditor()   fieldScreen.show()另一种选择是在 main 中创建 Mapeditor 并单击显示它: # ... fieldScreen = Mapeditor() fieldE.clicked.connect(fieldScreen.show) # ...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python