mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2025-07-20 20:21:09 +02:00
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/
103 lines
2.5 KiB
Python
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()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|