使用Python Traits的多窗口GUI

时间:2013-08-21 14:20:02

标签: python user-interface window traits

如何使用Python特性创建两个窗口?像

这样的东西
if __name__ == '__main__':
    main_gui = MainGUI()
    user_input = UserInput()

    main_gui.configure_traits()
    user_input.configure_traits()

这里的问题是在main_gui关闭之前不会调用user_input.configure_traits,但由于我希望在两个窗口之间进行交互,这显然不会。有没有办法模仿MainGUI和UserInput中的'close'函数而不实际关闭窗口,以便代码的主体可以继续?谢谢!

1 个答案:

答案 0 :(得分:0)

你在这里想做的不是traithonic。

您应该做的是将用户输入窗口设置为主窗口的子窗口,并使用traits的事件监听系统来跟踪用户的交互。一个非常简单的例子:

class MainGUI(HasTraits):
  GUIWidgetsForMainGUI = Any
  user_window = Instance(UserInput)
  button = Button('Get User Input')

  traits_view=View(Item('GUIWidgetsForMainGUI'),
    Item('button'))

  def _button_fired(self):
    self.user_window.edit_traits()

  @on_trait_change('button')
  def or_alternately_you_can_use_listeners(self):
    self.user_window.edit_traits()

MainGUI().configure_traits()