Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python特性的多窗口GUI_Python_User Interface_Window_Traits - Fatal编程技术网

使用Python特性的多窗口GUI

使用Python特性的多窗口GUI,python,user-interface,window,traits,Python,User Interface,Window,Traits,如何使用Python特性创建两个窗口?差不多 if __name__ == '__main__': main_gui = MainGUI() user_input = UserInput() main_gui.configure_traits() user_input.configure_traits() 这里的问题是,在关闭主gui之前,不会调用user_input.configure_traits,但由于我希望在两个窗口之间进行交互,这显然不行。是否有一种

如何使用Python特性创建两个窗口?差不多

if __name__ == '__main__':
    main_gui = MainGUI()
    user_input = UserInput()

    main_gui.configure_traits()
    user_input.configure_traits()

这里的问题是,在关闭主gui之前,不会调用user_input.configure_traits,但由于我希望在两个窗口之间进行交互,这显然不行。是否有一种方法可以在MainGUI和UserInput中模拟“close”函数而不关闭窗口,这样代码的主体就可以继续了?谢谢

你在这里要做的不是叛逆

您应该做的是将用户输入窗口设置为主窗口的子窗口,并使用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()

谢谢,这很有道理。如果我想在MainGUI.configure_traits()上同时弹出窗口,我可以将self.user_window.edit_traits()移动到自定义初始化中吗?这会允许用户在两者之间来回移动吗?刚刚确认这也可以。看来,就特质而言,总有一个模范班可以充当大师班。。非常感谢。是的,您可以将与用户窗口的交互移动到
\uuuu init\uuuu
中。只是要小心,因为在某些使用复杂编辑器的用例中,并不是所有的特性都可以在那时初始化,并且您的交互可能会中断。