pyqt5 создание нового окна - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь создать новое окно при нажатии кнопки 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 Ответ

0 голосов
/ 08 марта 2019

Переменные, созданные в функции, удаляются, когда функция завершает выполнение, поэтому, даже если окно отображается, оно будет закрыто и устранено в одно мгновение. Таким образом, решение состоит в том, чтобы расширить его жизненный цикл, чтобы он мог быть создан как глобальная переменная:

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

Другой вариант - создать Mapeditor в main и показать его по нажатию:

 # ...
 fieldScreen = Mapeditor()
 fieldE.clicked.connect(fieldScreen.show)
 # ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...