I added some needed lines to your code, now it works. Somehow you have to refresh your drawing as you scroll:
import wx
class Canvas(wx.ScrolledWindow):
def __init__(self,parent):
self.okno=parent
self.radic = wx.FlexGridSizer(3,2,0,0)
self.canvas = wx.ScrolledWindow(self.okno, -1)
# EnableScrolling(bool x_scrolling, bool y_scrolling)
self.canvas.EnableScrolling(True, True)
# SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, int noUnitsX,
# int noUnitsY, int xPos=0, int yPos=0, bool noRefresh=False)
PAGE_WIDTH = 1000
PAGE_HEIGHT = 1000
self.canvas.SetScrollbars(20, 20, PAGE_WIDTH/20, PAGE_HEIGHT/20)
self.radic.Add(self.canvas, 1, wx.EXPAND)
self.radic.Add((0,0))
self.radic.Add((0,0))
self.radic.Add((0,0))
self.radic.AddGrowableRow(0, 1)
self.radic.AddGrowableCol(0, 1)
self.canvas.SetCursor(wx.CROSS_CURSOR)
self.canvas.Bind(wx.EVT_PAINT, self.OnPaint)
self.okno.SetSizer(self.radic)
def vykresli_graf(self,dc):
dc.BeginDrawing()
lines=[(-500,-500,507,507)]
dc.DrawLineList(lines)
dc.EndDrawing()
def OnPaint(self, evt):
dc = wx.PaintDC(self.canvas)
self.vykresli_graf(dc)
if __name__ == "__main__":
okno = wx.App(0)
parent=wx.MDIParentFrame(None,size=wx.Size(500,500))
child=wx.MDIChildFrame(parent,title="Graf",id=-1)
Canvas(child)
child.Maximize()
parent.Show()
okno.MainLoop()