from mojo.canvas import Canvas
A vanilla object that sends all user input events to a given delegate.
Canvas(posSize, delegate=None, canvasSize=(1000, 1000), acceptsMouseMoved=False, hasHorizontalScroller=True, hasVerticalScroller=True, autohidesScrollers=False, backgroundColor=None, drawsBackground=True)
Methods
All events a delegate could have that can be used:
- draw()
Callback when the canvas get drawn. - becomeFirstResponder(event)
Callback when the canvas becomes the first responder, when it starts to receive user interaction callbacks. - resignFirstResponder(event)
Callback when the canvas resigns the first responder, when the canvas will not longer receive user interaction callbacks. - mouseDown(event)
Callback when the user hit the canvas with the mouse. - mouseDragged(event)
Callback when the user drag the mouse around in the canvas. - mouseUp(event)
Callback when the user lifts up the mouse from the canvas. - mouseMoved(event)
Callback when the user moves the mouse in de canvas. Be careful this is called frequently. (only when accepsMouseMoved is set True) - rightMouseDown(event)
Callback when the user clicks inside the canvas with the right mouse button. - rightMouseDragged(event)
Callback when the users is dragging in the canvas with the right mouse button down. - rightMouseUp(event)
Callback when the users lift up the right mouse button from the canvas. - keyDown(event)
Callback when the users hits a key.
The event object has a characters() method returns the pressed character key. - keyUp(event)
Callback when the users lift up the key. - flagChanged(event)
Callback when the users changed a modifier flag:
command shift control alt
Example
from mojo.canvas import Canvas from mojo.drawingTools import * from vanilla import * class ExampleWindow: def __init__(self): self.size = 50 self.w = Window((400, 400), minSize=(200, 200)) self.w.slider = Slider((10, 5, -10, 22), value=self.size, callback=self.sliderCallback) self.w.canvas = Canvas((0, 30, -0, -0), delegate=self) self.w.open() def sliderCallback(self, sender): self.size = sender.get() self.w.canvas.update() def draw(self): rect(10, 10, self.size, self.size) ExampleWindow()