Как передать переменные между двумя классами/окнами в PyGtk?

Я начинаю с PyGtk, и у меня возникают проблемы с пониманием взаимодействия окон.

Мой очень простой вопрос заключается в следующем.
Предположим, у меня есть класс, который просто создает окно с полем для ввода текста. При нажатии кнопки «ОК» в этом окне я хочу передать текст в поле ввода в другое окно, созданное другим классом, с меню gtk и создать новую запись с содержимым текстового поля.

Как мне это реализовать?


person Ingo    schedule 03.11.2010    source источник


Ответы (1)


Назовем A Меню, а B окно с полем для ввода текста. Если я правильно понял, A вызывает B, и когда в B нажата кнопка Ok, A нужно обновить свое меню.

В этом сценарии вы можете создать функцию обратного вызова в A, предназначенную для вызова при нажатии кнопки ok B. Когда вы создаете B, вы можете передать этот обратный вызов, вот пример:

class B(gtk.Window):
   def __init__(self, callback):
      gtk.Window.__init__(self)

      self.callback = callback
      # Create components:
      # self.entry, self.ok_button ...

      self.ok_button.connect("clicked", self.clicked)

   def clicked(self, button):
      self.callback(self.entry.get_text())

class A(gtk.Window):
   def create_popup(self):
      popup = B(self.popup_callback)
      popup.show()

   def popup_callback(self, text):
       # Update menu with new text
       # ...
person pmoleri    schedule 03.11.2010