WxPython: something expanding

How to make any wxPython widget (for example, wx.Panel or wx.Button) automatically expand to fill its parent window?

+4
source share
3 answers

Short answer: use a sizer with a proportion of 1 and a wx.Expand tag.

So here I am in the init panel

sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.canvas, 1, wx.EXPAND) self.SetSizer(sizer) 
+7
source

it shows how you can expand the child panel with a change in frame size; it also shows how you can switch two panels, one of which contains cntrls and one that contains I think this solves all your problems.

 import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None) self.panel = wx.Panel(self) # create controls self.cntrlPanel = wx.Panel(self.panel) stc1 = wx.StaticText(self.cntrlPanel, label="wow it works") stc2 = wx.StaticText(self.cntrlPanel, label="yes it works") btn = wx.Button(self.cntrlPanel, label="help?") btn.Bind(wx.EVT_BUTTON, self._onShowHelp) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(stc1) sizer.Add(stc2) sizer.Add(btn) self.cntrlPanel.SetSizer(sizer) # create help panel self.helpPanel = wx.Panel(self.panel) self.stcHelp = wx.StaticText(self.helpPanel, label="help help help\n"*8) btn = wx.Button(self.helpPanel, label="close[x]") btn.Bind(wx.EVT_BUTTON, self._onShowCntrls) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.stcHelp) sizer.Add(btn) self.helpPanel.SetSizer(sizer) self.helpPanel.Hide() self.helpPanel.Raise() self.helpPanel.SetBackgroundColour((240,250,240)) self.Bind(wx.EVT_SIZE, self._onSize) self._onShowCntrls(None) def _onShowHelp(self, event): self.helpPanel.SetPosition((0,0)) self.helpPanel.Show() self.cntrlPanel.Hide() def _onShowCntrls(self, event): self.cntrlPanel.SetPosition((0,0)) self.helpPanel.Hide() self.cntrlPanel.Show() def _onSize(self, event): event.Skip() self.helpPanel.SetSize(self.GetClientSizeTuple()) self.cntrlPanel.SetSize(self.GetClientSizeTuple()) app = wx.PySimpleApp() frame = MyFrame() frame.Show() app.SetTopWindow(frame) app.MainLoop() 
+1
source

In the case of a button, so that the button fills the parent window, when the parent window (the frame in my case) changes size, put button.SetSize(parent_window.GetSize()) in the parent window. Procedure for handling OnSize events.

0
source

Source: https://habr.com/ru/post/1286643/


All Articles