2009-06-26 9 views
3

J'essaie une mise en page simple et le panneau divisé par un SplitterWindow ne se développe pas à remplir toute la région, ce que je veux est la suivante:wxPython SplitterWindow ne se développe pas dans un groupe

[button] <= (fixed size) 
---------        
TEXT AREA       } 
~~~~~~~~~ <= (this is the splitter) } this is a panel 
TEXT AREA       } 

La réelle code est:

import wx 
    app = wx.App() 
    frame = wx.Frame(None, wx.ID_ANY, "Register Translator") 

    parseButton = wx.Button(frame, label="Parse") 
    panel = wx.Panel(frame) 
    panel.SetBackgroundColour("BLUE") 
    splitter = wx.SplitterWindow(panel) 
    inputArea = wx.TextCtrl(splitter, style=wx.TE_MULTILINE) 
    outputArea = wx.TextCtrl(splitter, style=wx.TE_MULTILINE) 
    splitter.SplitHorizontally(inputArea, outputArea) 

    sizer=wx.BoxSizer(wx.VERTICAL) 
    sizer.Add(parseButton, 0, wx.ALIGN_CENTER) 
    sizer.Add(panel, 1, wx.EXPAND | wx.ALL) 

    frame.SetSizerAndFit(sizer) 
    frame.SetAutoLayout(1) 

    frame.Show(True) 
    app.MainLoop() 

Je mis la couleur du panneau différent, et il utilise en fait la zone, de sorte que le problème est que le SplitterWindow au sein du Groupe, et non pas dans le BoxSizer.

Des idées sur pourquoi cela ne fonctionne pas? Merci!

Répondre

4

Le panneau est probablement en expansion, mais la fenêtre défilée du panneau ne l'est pas, car vous n'utilisez pas de taille pour le panneau, mais uniquement le cadre.

Vous pouvez également essayer de faire en sorte que SplitterWindow soit un enfant du cadre, sans le panneau.

+0

merci, j'ai ajouté un second calibreur pour le panneau et ajouté le séparateur à celui-ci et cela fonctionne ... mais je ne comprends pas totalement pourquoi cela fonctionne dans le cadre sans avoir besoin d'un calibreur: -s – fortran

+0

Si un frame a un seul enfant, il le redimensionnera pour remplir le cadre dans le rappel EVT_SIZE. – FogleBird

Questions connexes