为了账号安全,请及时绑定邮箱和手机立即绑定

pyqt5 创建新窗口

pyqt5 创建新窗口

墨色风雨 2021-11-30 16:36:27
我正在尝试在按下 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)

 # ...


查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信