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/
303 lines
13 KiB
Python
303 lines
13 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
|
|
A test and demo of the features of the ScaledTextBox
|
|
|
|
"""
|
|
|
|
import wx
|
|
|
|
## import the installed version
|
|
from wx.lib.floatcanvas import NavCanvas, FloatCanvas
|
|
|
|
## import the local version
|
|
#import sys
|
|
#sys.path.append("..")
|
|
#from floatcanvas import NavCanvas, FloatCanvas
|
|
|
|
import numpy as np
|
|
|
|
class DrawFrame(wx.Frame):
|
|
|
|
"""
|
|
A frame used for the FloatCanvas Demo
|
|
|
|
"""
|
|
|
|
def __init__(self,parent, id,title,position,size):
|
|
wx.Frame.__init__(self,parent, id,title,position, size)
|
|
|
|
# Add the Canvas
|
|
self.CreateStatusBar()
|
|
Canvas = NavCanvas.NavCanvas(self,-1,(500,500),
|
|
ProjectionFun = None,
|
|
Debug = 0,
|
|
BackgroundColor = "DARK SLATE BLUE",
|
|
).Canvas
|
|
|
|
self.Canvas = Canvas
|
|
self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove )
|
|
|
|
Point = (45,40)
|
|
Box = Canvas.AddScaledTextBox("A Two Line\nString",
|
|
Point,
|
|
2,
|
|
Color = "Black",
|
|
BackgroundColor = None,
|
|
LineColor = "Red",
|
|
LineStyle = "Solid",
|
|
LineWidth = 1,
|
|
Width = None,
|
|
PadSize = 5,
|
|
Family = wx.ROMAN,
|
|
Style = wx.NORMAL,
|
|
Weight = wx.NORMAL,
|
|
Underlined = False,
|
|
Position = 'br',
|
|
Alignment = "left",
|
|
InForeground = False)
|
|
|
|
# All defaults
|
|
Box = Canvas.AddScaledTextBox("A Two Line\nString",
|
|
Point,
|
|
2)
|
|
|
|
Box = Canvas.AddScaledTextBox("A Two Line\nString",
|
|
Point,
|
|
2,
|
|
BackgroundColor = "Yellow",
|
|
LineColor = "Red",
|
|
LineStyle = "Solid",
|
|
PadSize = 5,
|
|
Family = wx.TELETYPE,
|
|
Position = 'bl')
|
|
|
|
Box = Canvas.AddScaledTextBox("A Two Line\nString",
|
|
Point,
|
|
2,
|
|
BackgroundColor = "Yellow",
|
|
LineColor = "Red",
|
|
LineStyle = "Solid",
|
|
PadSize = 5,
|
|
Family = wx.TELETYPE,
|
|
Position = 'tr')
|
|
|
|
|
|
|
|
|
|
Box.Bind(FloatCanvas.EVT_FC_LEFT_DOWN, self.binding2)
|
|
|
|
Canvas.AddPoint(Point, Diameter = 4)
|
|
|
|
Point = (45,15)
|
|
Box = Canvas.AddScaledTextBox("A Two Line\nString",
|
|
Point,
|
|
2,
|
|
Color = "Black",
|
|
BackgroundColor = 'Red',
|
|
LineColor = "Blue",
|
|
LineStyle = "LongDash",
|
|
LineWidth = 2,
|
|
Width = None,
|
|
PadSize = 5,
|
|
Family = wx.TELETYPE,
|
|
Style = wx.NORMAL,
|
|
Weight = wx.NORMAL,
|
|
Underlined = False,
|
|
Position = 'cr',
|
|
Alignment = "left",
|
|
InForeground = False)
|
|
|
|
Box = Canvas.AddScaledTextBox("A Two Line\nString",
|
|
Point,
|
|
1.5,
|
|
Color = "Black",
|
|
BackgroundColor = 'Red',
|
|
LineColor = "Blue",
|
|
LineStyle = "LongDash",
|
|
LineWidth = 2,
|
|
Width = None,
|
|
PadSize = 5,
|
|
Family = wx.TELETYPE,
|
|
Style = wx.NORMAL,
|
|
Weight = wx.NORMAL,
|
|
Underlined = False,
|
|
Position = 'cl',
|
|
Alignment = "left",
|
|
InForeground = False)
|
|
|
|
Canvas.AddPoint(Point, Diameter = 4)
|
|
|
|
Point = (45,-10)
|
|
Box = Canvas.AddScaledTextBox("A Two Line\nString",
|
|
Point,
|
|
2,
|
|
Color = "Black",
|
|
BackgroundColor = 'Red',
|
|
LineColor = "Blue",
|
|
LineStyle = "LongDash",
|
|
LineWidth = 2,
|
|
Width = None,
|
|
PadSize = 3,
|
|
Family = wx.TELETYPE,
|
|
Style = wx.NORMAL,
|
|
Weight = wx.NORMAL,
|
|
Underlined = False,
|
|
Position = 'tc',
|
|
Alignment = "left",
|
|
InForeground = False)
|
|
|
|
Box = Canvas.AddScaledTextBox("A three\nLine\nString",
|
|
Point,
|
|
1.5,
|
|
Color = "Black",
|
|
BackgroundColor = 'Red',
|
|
LineColor = "Blue",
|
|
LineStyle = "LongDash",
|
|
LineWidth = 2,
|
|
Width = None,
|
|
PadSize = 0.5,
|
|
Family = wx.TELETYPE,
|
|
Style = wx.NORMAL,
|
|
Weight = wx.NORMAL,
|
|
Underlined = False,
|
|
Position = 'bc',
|
|
Alignment = "left",
|
|
InForeground = False)
|
|
|
|
|
|
Canvas.AddPoint(Point, Diameter = 4)
|
|
|
|
Box = Canvas.AddScaledTextBox("Some Auto Wrapped Text. There is enough to do.",
|
|
(80,40),
|
|
2,
|
|
BackgroundColor = 'White',
|
|
LineWidth = 2,
|
|
Width = 20,
|
|
PadSize = 0.5,
|
|
Family = wx.TELETYPE,
|
|
)
|
|
|
|
Box = Canvas.AddScaledTextBox("Some more auto wrapped text. Wrapped to a different width and right aligned.\n\nThis is another paragraph.",
|
|
(80,20),
|
|
2,
|
|
BackgroundColor = 'White',
|
|
LineWidth = 2,
|
|
Width = 40,
|
|
PadSize = 0.5,
|
|
Family = wx.ROMAN,
|
|
Alignment = "right"
|
|
)
|
|
Point = np.array((100, -20), np.float64)
|
|
Box = Canvas.AddScaledTextBox("Here is even more auto wrapped text. This time the line spacing is set to 0.8. \n\nThe Padding is set to 0.",
|
|
Point,
|
|
Size = 3,
|
|
BackgroundColor = 'White',
|
|
LineWidth = 1,
|
|
Width = 40,
|
|
PadSize = 0.0,
|
|
Family = wx.ROMAN,
|
|
Position = "cc",
|
|
LineSpacing = 0.8
|
|
)
|
|
Canvas.AddPoint(Point, "Red", 2)
|
|
|
|
Point = np.array((0, -40), np.float64)
|
|
# Point = N.array((0, 0), N.float_)
|
|
for Position in ["tl", "bl", "tr", "br"]:
|
|
# for Position in ["br"]:
|
|
Box = Canvas.AddScaledTextBox("Here is a\nfour liner\nanother line\nPosition=%s"%Position,
|
|
Point,
|
|
Size = 4,
|
|
Color = "Red",
|
|
BackgroundColor = None,#'Light Blue',
|
|
LineWidth = 1,
|
|
LineColor = "White",
|
|
Width = None,
|
|
PadSize = 2,
|
|
Family = wx.ROMAN,
|
|
Position = Position,
|
|
LineSpacing = 0.8
|
|
)
|
|
Canvas.AddPoint(Point, "Red", 4)
|
|
|
|
Point = np.array((-20, 60), np.float64)
|
|
Box = Canvas.AddScaledTextBox("Here is some\ncentered\ntext",
|
|
Point,
|
|
Size = 4,
|
|
Color = "Red",
|
|
BackgroundColor = 'Light Blue',
|
|
LineWidth = 1,
|
|
LineColor = "White",
|
|
Width = None,
|
|
PadSize = 2,
|
|
Family = wx.ROMAN,
|
|
Position = "tl",
|
|
Alignment = "center",
|
|
LineSpacing = 0.8
|
|
)
|
|
|
|
Point = np.array((-20, 20), np.float64)
|
|
Box = Canvas.AddScaledTextBox("Here is some\nright aligned\ntext",
|
|
Point,
|
|
Size = 4,
|
|
Color = "Red",
|
|
BackgroundColor = 'Light Blue',
|
|
LineColor = None,
|
|
Width = None,
|
|
PadSize = 2,
|
|
Family = wx.ROMAN,
|
|
Position = "tl",
|
|
Alignment = "right",
|
|
LineSpacing = 0.8
|
|
)
|
|
|
|
Point = np.array((100, -60), np.float64)
|
|
Box = Canvas.AddScaledTextBox("Here is some auto wrapped text. This time it is centered, rather than right aligned.\n\nThe Padding is set to 2.",
|
|
Point,
|
|
Size = 3,
|
|
BackgroundColor = 'White',
|
|
LineWidth = 1,
|
|
Width = 40,
|
|
PadSize = 2.0,
|
|
Family = wx.ROMAN,
|
|
Position = "cc",
|
|
LineSpacing = 0.8,
|
|
Alignment = 'center',
|
|
)
|
|
|
|
|
|
self.Show(True)
|
|
self.Canvas.ZoomToBB()
|
|
|
|
return None
|
|
def OnMove(self, event):
|
|
"""
|
|
Updates the status bar with the world coordinates
|
|
"""
|
|
self.SetStatusText("%.2f, %.2f"%tuple(event.Coords))
|
|
|
|
|
|
def binding(self, event):
|
|
print("I'm the Rectangle")
|
|
|
|
def binding2(self, event):
|
|
print("I'm the TextBox")
|
|
|
|
app = wx.App()
|
|
DrawFrame(None, -1, "FloatCanvas Demo App", wx.DefaultPosition, (700,700) )
|
|
app.MainLoop()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|