Python-web2py-使用类在画布上绘制矩形(或图像)

Python-web2py-使用类在画布上绘制矩形(或图像),python,html,python-2.7,html5-canvas,web2py,Python,Html,Python 2.7,Html5 Canvas,Web2py,我正在为一个学校项目制作一个程序,该项目要求我将拼贴画中的图像放在画布上。我用方法创建了一个类,该类创建了放置图像(或用于测试的矩形)所需的所有数字(坐标、大小等)。然而,我不确定如何使它,以便我可以调用这些方法,使HTML绘制在正确的地方矩形 index.html中的内容: <script> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); {{makeMosaic.

我正在为一个学校项目制作一个程序,该项目要求我将拼贴画中的图像放在画布上。我用方法创建了一个类,该类创建了放置图像(或用于测试的矩形)所需的所有数字(坐标、大小等)。然而,我不确定如何使它,以便我可以调用这些方法,使HTML绘制在正确的地方矩形

index.html中的内容:

<script>
    var c=document.getElementById("myCanvas");
    var ctx=c.getContext("2d");
    {{makeMosaic.drawRectangle(0)}}
    ctx.fillStyle = "#FF0000";
    ctx.fillRect({{=session.space[0][0]}}, {{=session.space[0][1]}}, {{=session.space[1][0]-session.space[0][0]}}, {{=session.space[1][1]-session.space[0][1]}});
</script>

因此,我尝试在index.html中调用drawRectangle,以便可以绘制第二个不同的矩形。

您不能从html调用Python代码。Python在服务器上运行,而不是在浏览器中运行。你要么使用JavaScript,要么将服务器上的拼贴作为图像,然后将此图像作为响应发送到浏览器。你不能从HTML调用Python代码。Python在服务器上运行,而不是在浏览器中运行。您必须使用JavaScript,或者将服务器上的拼贴作为图像,然后将此图像作为响应发送到浏览器。
try:
    from PIL import Image
except:
    import Image
import os

@auth.requires_login()
def index():
    ... irrelevant code ...
    makeMosaic = Mosaic(3508, 4960, 2)
    makeMosaic.divideEmpty(0, 1000, 1200)
    return dict(Ufname = Ufname, Utype = Utype, makeMosaic=makeMosaic)


... irrelevant code...

class Mosaic:
    def __init__(self, c_x_size, c_y_size, c_id):
        self.c_x_size = c_x_size #Canvas x size
        self.c_y_size = c_y_size #Canvas y size
        self.image_sizes = [] #A list of the sizes of each image. Formatted like: [[x,y],[x,y],[x,y]...]
        self.c_id = c_id
        images = db().select(db.image.ALL, orderby=db.image.id)
        for image in images:
            if image.canvas_id == self.c_id:
                img = Image.open(os.path.join(request.folder, "uploads", image.file), "r")
                self.image_sizes.append([img.size[0], img.size[1]])
        self.emptyspace = [[[0,0],[self.c_x_size, self.c_y_size]]] #The list for the empty spaces. Formatted like: [[[top left x & y],[bottom right x & y]]]

    def divideEmpty(self, imgInd, x_place, y_place):
        ... irrelevant code...

    def addImage(self, imgInd, x_place, y_place):
        ... irrelevant code...

    def drawRectangle(self, spaceInd):
        session.space = self.emptyspace[spaceInd]