小さなウィンドウが多数ある大きなアプリケーションがあります。traitsui のファイル ダイアログを使用して、これらのウィンドウからいくつかのファイルを開きたいと思いました。ただし、ファイルダイアログはファイルを正しく生成して選択しますが、終了後にアクティブなウィンドウを望ましくないウィンドウに一貫して切り替えます。なぜだか本当に困っています。
同じ問題を表示する簡単なテストを次に示します。
from traitsui.api import *
from traits.api import *
from traitsui.file_dialog import *
class BigApplication(HasTraits):
subwindow=Instance(HasTraits)
open_subwindow=Button('clickme')
traits_view=View(Item(name='open_subwindow'),height=500,width=500)
def _subwindow_default(self):
return Subwindow()
def _open_subwindow_fired(self):
self.subwindow.edit_traits()
class Subwindow(HasTraits):
f=File
some_option = Bool
openf=Button('Browse for file')
traits_view=View(Item(name='f',style='text'),
Item(name='some_option'),
Item(name='openf'),buttons=OKCancelButtons)
def _openf_fired(self):
self.f=open_file()
BigApplication().configure_traits()
open_file が戻って目的のファイルを選択すると、アクティブなウィンドウは BigApplication ウィンドウに切り替わり、サブウィンドウ ウィンドウには戻りません (ユーザーが [OK] をクリックする前にいくつかの追加オプションを選択できるようにするため)。