示例#1
0
    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
示例#3
0
    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)