I’ve never used VirtualSize and don’t know what it’s used for. 
I think wx.Sizer refers to client MinSize to calculate its own best size (maybe).
So you should do like this:
# set client minsize
>>> self.MinSize=(300,300)
>>> self.Parent.SendSizeEvent()
The wx.SizeEvent is needed to refresh the scrollbars.
Hi,
So can I just use:-
self.notebook_1_pane_1 = wx.ScrolledWindow(self.nb,-1, size=(screenWidth,400), pos=(0,28), style=wx.SIMPLE_BORDER)
in place of: -
self.notebook_1_pane_1 = wx.lib.scrolledpanel.ScrolledPanel(self.nb,-1, size=(screenWidth,400), pos=(0,28), style=wx.SIMPLE_BORDER)
or some more modifications are needed?
Hi,
panel.SetVirtualSize(w,h) is used for setting the virtual size of our panel.
If the Virtual size is less than the client size, scrollbars are added (if panel.SetupScrolling() is done)
Is this what you intended?
import wx
import wx.lib
import wx.lib.scrolledpanel
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
screenSize = wx.DisplaySize()
screenWidth = screenSize[0]
screenHeight = screenSize[1]
kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
sizer_1 = wx.BoxSizer(wx.VERTICAL)
self.nb = wx.Notebook(self, wx.ID_ANY)
sizer_1.Add(self.nb, 1, wx.EXPAND, 0)
self.notebook_1_pane_1 = wx.lib.scrolledpanel.ScrolledPanel(self.nb, -1,)
# size=(screenWidth,400), pos=(0,28), style=wx.SIMPLE_BORDER)
self.notebook_1_pane_1.SetupScrolling()
self.nb.AddPage(self.notebook_1_pane_1, "page")
page = wx.Panel(self.notebook_1_pane_1, size=(screenWidth,400))
page.SetBackgroundColour('blue')
sizer = wx.BoxSizer()
sizer.Add(page)
self.notebook_1_pane_1.SetSizer(sizer)
self.SetSizer(sizer_1)
self.Layout()
self.Update()
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(None, wx.ID_ANY, "")
self.SetTopWindow(self.frame)
self.frame.Show()
return True
if __name__ == "__main__":
app = MyApp(0)
app.MainLoop()
No, sadly this also is no working… The result that I’m getting is changed, but far from what I desire 