【问题标题】:pyqt5 creating new windowpyqt5 创建新窗口
【发布时间】:2019-03-08 23:18:13
【问题描述】:

我正在尝试在按下 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】:

    函数中创建的变量在函数执行完毕后就被淘汰了,所以即使显示了窗口,也会在瞬间关闭并被淘汰。所以解决的办法就是延长它的生命周期,使其可以创建为全局变量:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 2019-09-10
      • 2018-05-16
      • 1970-01-01
      • 2019-07-31
      • 2017-08-28
      • 1970-01-01
      相关资源
      最近更新 更多