def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) bg_color = 'green' # changes the background of the scrollbars self.SetBackgroundColour(bg_color) sizer = wx.BoxSizer(wx.VERTICAL) panel = ScrolledPanel(self) panel.SetBackgroundColour(bg_color) panel.SetupScrolling(scroll_y=True) panelsizer = wx.BoxSizer(wx.VERTICAL) for _ in range(4): p = wx.Panel(panel, size=(400, 300)) p.SetBackgroundColour(bg_color) panelsizer.Add(p, 0, flag=wx.EXPAND) panelsizer.Add((-1, 10)) panel.SetSizer(panelsizer) for child in panel.GetChildren(): print(type(child)) # there is no scrollbar sizer.Add(panel, 1, flag=wx.EXPAND) self.SetSizer(sizer) self.Layout()
def update(self, **kwargs): """ Results ------- wxPanel obj https://stackoverflow.com/questions/3104323/getting-a-wxpython-panel-item-to-expand """ p1 = ScrolledPanel(self, -1, style=wx.TAB_TRAVERSAL | wx.SUNKEN_BORDER, name="panel1") p1.SetBackgroundColour("White") vbox = wx.BoxSizer(wx.VERTICAL) txt_info = wx.StaticText(p1, -1, txt) txt_info.SetForegroundColour("Green") vbox.Add(txt_info, 0, wx.ALIGN_LEFT | wx.ALL, 5) vbox.Add(wx.StaticLine(p1, -1, size=(1024, -1)), 0, wx.ALL, 5) vbox.Add((20, 20)) p1.SetSizer(vbox) p1.SetAutoLayout(1) p1.SetupScrolling() return p1
def __init__(self, parent=None, *args, **kw): super().__init__(parent, title='Azur Lane Combat Counter', style=wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.TAB_TRAVERSAL | wx.RESIZE_BORDER | wx.CLIP_CHILDREN, *args, **kw) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) self.SetBackgroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) frame_sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(frame_sizer) header_sizer = wx.BoxSizer(wx.HORIZONTAL) frame_sizer.Add(header_sizer, 0, wx.EXPAND | wx.ALL, border=5) self.spin = wx.SpinCtrl(self, min=0, max=99999, style=wx.ALIGN_CENTER_HORIZONTAL | wx.SP_ARROW_KEYS | wx.SP_WRAP | wx.TE_PROCESS_ENTER) self.spin.SetFont( wx.Font(30, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Segoe UI")) self.spin.Bind(wx.EVT_SPINCTRL, lambda e: self.on_number_change(e.GetPosition())) self.spin.Bind(wx.EVT_TEXT, lambda e: self.on_number_change(e.GetInt())) header_sizer.Add(self.spin, 1, flag=wx.ALL) display_checkbox = wx.CheckBox(self, label='Display') display_checkbox.Bind(wx.EVT_CHECKBOX, lambda e: self.on_display_check(e.IsChecked())) header_sizer.Add(display_checkbox, flag=wx.CENTER | wx.LEFT | wx.RIGHT, border=40) info_panel = ScrolledPanel(self, style=wx.BORDER_THEME | wx.TAB_TRAVERSAL) info_panel.SetBackgroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_MENU)) panel_sizer = wx.BoxSizer(wx.VERTICAL) info_panel.SetSizer(panel_sizer) self.info_text = wx.StaticText(info_panel) self.info_text.Wrap(-1) self.info_text.SetFocus() # this removes focus from the SpinCtrl panel_sizer.Add(self.info_text, 0, wx.ALL, border=5) info_panel.Layout() info_panel.SetupScrolling() panel_sizer.FitInside(info_panel) frame_sizer.Add(info_panel, 1, wx.EXPAND | wx.ALL, border=5) self.Layout() self.Centre(wx.BOTH)