我正在尝试在按下 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()
1 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
函数中创建的变量会在函数执行完毕后被清除,因此即使显示窗口,也会立即关闭并清除。所以解决办法是延长它的生命周期,使其可以创建为全局变量:
fieldScreen = None
def fieldeditorOPEN():
global fieldScreen
fieldScreen = Mapeditor()
fieldScreen.show()
另一种选择是在 main 中创建 Mapeditor 并单击显示它:
# ...
fieldScreen = Mapeditor()
fieldE.clicked.connect(fieldScreen.show)
# ...
添加回答
举报
0/150
提交
取消