2012-05-21 3 views
0

wxpython에서 스플리터 창을 사용하여 대화 상자를 분할하고 하나의 패널에 사용자 정의 트리 ctrl이 있고 다른 하나에는 정적 상자가있는 작은 코드를 작성했습니다. 이 코드는 Fedora와 우분투에서 잘 작동했지만 Windows에서는 대화 상자가 비어 있습니다.UNIX에서는 작동하지만 Windows에서는 작동하지 않는 코드

홈페이지 코드 : TreeFilter 사용자 정의 트리 Ctrl 키를입니다

wx.Dialog.__init__(self, None, 6, 'Filters',size = (500,600)) 
    self.splitter = wx.SplitterWindow(self, -1) 
    leftPanel = wx.Panel(self.splitter, -1) 
    leftBox = wx.BoxSizer(wx.VERTICAL) 
    self.__tree = TreeFilter(leftPanel, 1) 
    leftBox.Add(self.__tree, -1, wx.GROW) 
    self.__tree.Bind(CT.EVT_TREE_ITEM_CHECKED, self.checked) 
    leftPanel.SetSizer(leftBox) 

    rightPanel = wx.Panel(self.splitter, -1) 
    rightBox = wx.BoxSizer(wx.VERTICAL) 
    self.display = wx.StaticText(rightPanel, -1, '', style=wx.ALIGN_LEFT) 
    rightBox.Add(self.display, -1, wx.GROW) 


    btnsizer = wx.StdDialogButtonSizer() 
    btn = wx.Button(rightPanel, wx.ID_OK) 
    btn.SetDefault() 
    btnsizer.AddButton(btn) 

    btn = wx.Button(rightPanel, wx.ID_CANCEL) 
    btnsizer.AddButton(btn) 
    btnsizer.Realize() 
    rightBox.Add(btnsizer, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) 
    rightPanel.SetSizer(rightBox) 

    self.splitter.SplitVertically(leftPanel, rightPanel) 
    self.Centre() 

. 문제 해결을 도와주세요

+0

가 무엇인가 당신이 사용자 정의 트리 컨트롤을 제거 할 때 표시? –

+0

아무 것도 표시되지 않습니다. 절대 빈 대화 상자가 표시됩니다. – sushma

답변

0

문제는 확장하도록 설정된 크기 조절기에 스플리터 자체가없는 것입니다. 내 화면에서, 왼쪽 모서리에있는 작은 상자를 모두 볼 수 있으므로, 그런 일이 일어나는 것을 알 수있었습니다.

여기에 나를 위해 작동 예입니다 :

import wx 

######################################################################## 
class MyTreeCtrl(wx.TreeCtrl): 

    #---------------------------------------------------------------------- 
    def __init__(self, parent, id): 
     wx.TreeCtrl.__init__(self, parent, id) 


######################################################################## 
class TestDlg(wx.Dialog): 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self): 
     """Constructor""" 

     wx.Dialog.__init__(self, None, 6, 'Filters',size = (500,600)) 
     mainSizer = wx.BoxSizer(wx.VERTICAL) 

     self.splitter = wx.SplitterWindow(self, -1) 
     leftPanel = wx.Panel(self.splitter, -1) 
     leftBox = wx.BoxSizer(wx.VERTICAL) 
     self.tree = MyTreeCtrl(leftPanel, 1) 

     self.root = self.tree.AddRoot("The Root Item") 
     self.tree.SetPyData(self.root, None) 
     for x in range(15): 
      child = self.tree.AppendItem(self.root, "Item %d" % x) 
      self.tree.SetPyData(child, None) 
     self.tree.Expand(self.root) 

     leftBox.Add(self.tree, -1, wx.GROW) 
     #self.__tree.Bind(CT.EVT_TREE_ITEM_CHECKED, self.checked) 
     leftPanel.SetSizer(leftBox) 

     rightPanel = wx.Panel(self.splitter, -1) 
     rightBox = wx.BoxSizer(wx.VERTICAL) 
     self.display = wx.StaticText(rightPanel, -1, '', style=wx.ALIGN_LEFT) 
     rightBox.Add(self.display, -1, wx.GROW) 

     btnsizer = wx.StdDialogButtonSizer() 
     btn = wx.Button(rightPanel, wx.ID_OK) 
     btn.SetDefault() 
     btnsizer.AddButton(btn) 

     btn = wx.Button(rightPanel, wx.ID_CANCEL) 
     btnsizer.AddButton(btn) 
     btnsizer.Realize() 
     rightBox.Add(btnsizer, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) 
     rightPanel.SetSizer(rightBox) 

     self.splitter.SplitVertically(leftPanel, rightPanel) 
     self.Centre() 
     mainSizer.Add(self.splitter, 1, wx.EXPAND) 
     self.SetSizer(mainSizer) 

#---------------------------------------------------------------------- 
if __name__ == "__main__": 
    app = wx.App(False) 
    dlg = TestDlg() 
    dlg.Show() 
    dlg.Destroy() 
    app.MainLoop() 
+0

self.SendSizeEvent() 추가하여 내 문제를 해결했습니다. – sushma

관련 문제