Вызов функции в другом кадре (WxPython)

1

В моем приложении wxpython у меня есть родительский кадр и дочерний кадр. Когда я нажимаю кнопку внутри дочернего фрейма, я хочу, чтобы он отправлял некоторые данные (список, строку и т.д.) В родительский фрейм, закрывал себя, показывал родительский элемент и, наконец, вызывал функцию в родительском фрейме. Как я могу это сделать? (особенно вызов функции)

Спасибо заранее.

решаемые

  • 3
    Вы должны пометить ответ как принятый, если он решил вашу проблему, а не редактировать свой вопрос, чтобы сказать «решено»
  • 0
    Хорошо. Ты прав. Но если я сам решу проблему, думаю, что смогу отредактировать ее до «решено» и объяснить, что я сделал, верно?
Показать ещё 1 комментарий
Теги:
wxpython

3 ответа

2
Лучший ответ

Эта ссылка решила мою проблему

  • 0
    спас мою неделю, спасибо
2

Вы должны нажать кнопку сгенерировать событие, содержащее данные. Затем добавьте обработчик события в родительский кадр, который извлекает данные из события и вызывает функцию. Вики wxPython имеет учебник, посвященный событиям. Документация wx также содержит обзор обработки событий.

  • 0
    Ваш ответ кажется решением. Таким образом, у меня было нажатие кнопки генерировать событие, содержащее данные. Но как я могу получить эти данные с помощью обработчика событий внутри родительского фрейма?
  • 1
    Я думаю, чтобы использовать этот метод, вам нужно использовать PostEvent.
1

Вы также можете использовать pubsub: http://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/

Или вы можете просто использовать подкласс диалогового окна и показать его модально. Или вы можете использовать PostEvent для передачи события. Вот пример: http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/

Другим методом, который, как я думал, будет использовать сервер сокета или аналогичный, и отправить свои данные на это, и попросите свою программу проверить сервер на наличие новых данных. Это довольно запутанное для этого случая использования.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню