如何在PyGtk中的两个类/窗口之间传递变量?

时间:2010-11-03 19:22:10

标签: python pygtk

我开始使用PyGtk并且无法理解windows的交互。

我非常简单的问题如下 假设我有一个类,它只是创建一个带有文本输入字段的窗口。当单击该窗口中的“确定”按钮时,我想将输入字段中的文本传递到另一个窗口,由另一个类创建,使用gtk菜单,并创建一个包含文本字段内容的新条目。

我该如何实现?

1 个答案:

答案 0 :(得分:2)

我们调用A菜单,B调用带有文本输入字段的窗口。 如果我理解正确A调用B并且在B中按下确定按钮时,A需要更新其菜单。

在这种情况下,您可以在A中创建一个回调函数,意味着在按下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
       # ...