2011-09-17 12 views
0

メニューバーとパネル(wx.Panel)を含むメインフレーム(wx.Frame)があります。パネルには、フレームのメインUIが含まれています。メニュー項目をクリックすると、パネルのUIを更新したいと思います。wxPythonの親フレームからサブパネルのUIを更新するには

メニュー項目に関連付けられたイベントハンドラでself.Refresh()、self.panel.UpdateWindowUI()、self.UpdateWindowsUI(wxUPDATE_UI_RECURSE)を試していましたが、動作しません。私は新しいパネルを作成し、メニュー項目をクリックするたびにフレームをフレームに追加したくありません。

## =============== Event Handlers of the frame ===================   

def OnOpenConfig(self, event): 
    """Open the configuration file for the application""" 

    self.dir_name = os.getcwd() 
    dlg = wx.FileDialog(self, "Choose a file", self.dir_name, "", "*.conf", wx.OPEN) 
    if dlg.ShowModal() == wx.ID_OK: 
     self.file_name = dlg.GetFilename() 
     self.dir_name = dlg.GetDirectory() 
    dlg.Destroy() 
    print os.path.join(self.dir_name, self.file_name) 

    # the sub panel is changed here because of the configuration file 
    self.panel.LoadConfigFile(os.path.join(self.dir_name, self.file_name)) 

    # The update UI method should be here!!!!!!! 
    self.panel.Refresh() 

答えて

0

self.panel.LoadConfigFileの機能について説明してください。リフレッシュ後にself.panel.Update()を試すこともできます。

+0

self.panel.LoadConfigFile()は、テキストファイルから情報を読み、その情報をパネルのUIに使用します。コードはちょっと長くて面倒なので、私はここに投稿しないでください。私はリフレッシュ()の後でself.panel.Update()を試みましたが、動作しません。エラーまたは例外は見つかりませんでしたが、変更は表示されません。 – newwave

+0

私の懸念は、LoadConfigFileは、リフレッシュを呼び出すだけで十分であるはずなので、期待どおりの方法で要素を更新していない可能性があるということです。 – Cathy

関連する問題