I have a substantial wxpython-based application that I'm trying to port from 
python-2 to -3.  
Almost everything is working properly, except for a few small but important 
sections that use 
the OGL library.  That executes without any exceptions, but the objects created 
within the 
diagram/canvas/panel are invisible!  {sometimes they are visible for a small 
fraction of a 
second}.  This occurs on Windows-10 and on Linux(Debian) systems.  The colored 
background and
buttons render just fine, the buttons do what they should, but no objects 
appear on the
background (again, only with Py3, Py2 works properly).

I have cut the code to a pretty minimum set and will attempt to paste it to the 
bottom of 
this message in the hope that it will encourage one of you to see what the 
problem might be.
Alternatively if anyone knows of an example that works with Python-3 I'd be 
delighted to 
learn of it.

Thanks for any insights!!

# ---------------------------------------------
#   togl.py     test 'OGL' shape system.

from __future__ import print_function

import  sys
if 2 == sys.version_info.major :
    import wxversion
import  wx
import  random
import  wx.lib.ogl as ogllib

NOMSIZE=80
WINSIZE=400
N_ITEMS=7
shapeTypes= ( 'rect', 'circle', 'rndRect' )

class ShapeGraphicWindow(ogllib.ShapeCanvas):
    def __init__(self, parent):
        ogllib.ShapeCanvas.__init__(self, parent)
        self.diagram= ogllib.Diagram()
        self.SetDiagram(self.diagram)
        self.diagram.SetCanvas(self)
        self.SetBackgroundColour(wx.BLUE)
    def addShape(self, shape_type, title) :
        if 'rect' == shape_type : # rectangle
            shape= ogllib.RectangleShape(50, 35)
            brush= wx.Brush(wx.TheColourDatabase.Find("RED"), wx.SOLID)
        elif 'circle' == shape_type : # circle
            shape= ogllib.CircleShape(65)
            brush= wx.Brush(wx.TheColourDatabase.Find("YELLOW"), wx.SOLID)
        elif 'rndRect' == shape_type : # rounded-rectangle
            shape= ogllib.RectangleShape(45, 30)
            shape.SetCornerRadius(-0.3)
            brush= wx.Brush(wx.TheColourDatabase.Find("GOLDENROD"), wx.SOLID)
        else :
            raise AssertionError("Unable to add shape: %s : 
%s",(shape_type,title))
        shape.SetBrush( brush )
        x= int(random.uniform(NOMSIZE,WINSIZE-NOMSIZE))
        shape.SetX(x)
        y= int(random.uniform(NOMSIZE,WINSIZE-NOMSIZE))
        shape.SetY(y)
        shape.AddText(title)
        print("Draw",title,"at location ", (x,y), "on canvas of size", 
self.GetSize())
        shape.SetCanvas(self)
        self.AddShape(shape)
        self.Refresh()
        shape.Show(True)
        return

class TestPanel(wx.Panel):
    def __init__(self, frame) :
        wx.Panel.__init__(self, parent=frame)
        self.objcnts= (0,N_ITEMS)
        sz= wx.BoxSizer(wx.VERTICAL)
        hsz= wx.BoxSizer(wx.HORIZONTAL)
        btnq= wx.Button(self, -1, "Quit")
        btnq.Bind(wx.EVT_BUTTON, self.Quit)
        hsz.Add(btnq, 0, wx.ALL, 3)
        btnq= wx.Button(self, -1, "AutoTest")
        btnq.Bind(wx.EVT_BUTTON, self.AutoTest)
        hsz.Add(btnq, 0, wx.ALL, 3)
        sz.Add(hsz, 0, wx.ALIGN_LEFT)
        self.shp_graph_win= ShapeGraphicWindow(self)
        sz.Add(self.shp_graph_win, 2, wx.EXPAND)
        self.SetSizer(sz)
        #self.Layout()
        #self.Fit()
        self.SetAutoLayout(True)
    def mkTitle(self, index) :
        return ''.join([ chr(index + ord('A')), ":", str(index) ])
    def AutoTest(self, event=None) :
        for j in range(*(self.objcnts)) :
            self.shp_graph_win.addShape(shapeTypes[j % len(shapeTypes)], 
self.mkTitle(j))
        self.objcnts= (self.objcnts[1], self.objcnts[1]+N_ITEMS)
    def Quit(self, event) :
        self.Destroy()
        sys.exit(0)

class TestFrame(wx.Frame):
    def __init__(self) :
        wx.Frame.__init__(self, None, -1, "test basic OGL functionality",
            size= wx.Size(WINSIZE,WINSIZE) )
        TestPanel(self)
        self.Show(True)

app = wx.App(False)
frame = TestFrame()
ogllib.OGLInitialize()
app.MainLoop()
sys.exit(0)
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to