Files
Phoenix/samples/floatcanvas/Hexagons.py
Edouard Choinière 95cafd1a3f style: Normalise numpy imports with import numpy as np
The convention when importing numpy is to use `import numpy as np`

Fixes: unconventional-import-alias (ICN001)
Ruff rule: https://docs.astral.sh/ruff/rules/unconventional-import-alias/
2025-02-08 16:48:57 +00:00

103 lines
2.5 KiB
Python

#!/usr/bin/env python
"""
A simple demo to display a lot of hexagons
This was an example someone had on the wxPython-users list
"""
import wx
import wx.lib.colourdb
## import local version:
#import sys
#sys.path.append("..")
#from floatcanvas import NavCanvas, FloatCanvas
## import installed version
from wx.lib.floatcanvas import NavCanvas, FloatCanvas
NumHexagons = 1000
import numpy as np
from numpy.random import uniform
import random
import time
class DrawFrame(wx.Frame):
"""
A frame used for the FloatCanvas Demo
"""
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
# Add the Canvas
self.Canvas = NavCanvas.NavCanvas(self,-1,(500,500),
ProjectionFun = None,
Debug = 1,
BackgroundColor = "DARK SLATE BLUE",
).Canvas
self.MakeHexagons()
self.Show(True)
print("Drawing the Hexagons")
self.Canvas.ZoomToBB()
return None
def MakeHexagons(self):
print("Building %i Hexagons"%NumHexagons)
# get a list of colors for random colors
wx.lib.colourdb.updateColourDB()
self.colors = wx.lib.colourdb.getColourList()
print("Max colors:", len(self.colors))
Canvas = self.Canvas
D = 1.0
h = D *np.sqrt(3)/2
Hex = np.array(((D , 0),
(D/2 , -h),
(-D/2, -h),
(-D , 0),
(-D/2, h),
(D/2 , h),
))
Centers = uniform(-100, 100, (NumHexagons, 2))
for center in Centers:
# scale the hexagon
Points = Hex * uniform(5,20)
#print(Points)
# shift the hexagon
Points = Points + center
#print(Points)
cf = random.randint(0,len(self.colors)-1)
#cf = 55
H = Canvas.AddPolygon(Points, LineColor = None, FillColor = self.colors[cf])
#print("BrushList is: %i long"%len(H.BrushList))
H.Bind(FloatCanvas.EVT_FC_LEFT_DOWN, self.HexHit)
print("BrushList is: %i long"%len(H.BrushList))
def HexHit(self, Hex):
print("A %s Hex was hit, obj ID: %i"%(Hex.FillColor, id(Hex)))
app = wx.App(False)
DrawFrame(None, -1, "FloatCanvas Demo App", wx.DefaultPosition, (700,700) )
app.MainLoop()