在 Python 模式下使用 Processing PGraphics?

Using Processing PGraphics in Python Mode?

在 Processing 的 Java 模式中,您可以通过全局声明 PGraphics 对象来使用它们,在 setup() 中使用 createGraphics() 设置它们,然后在 draw() 中引用它们。

在Python模式下,做什么不是很清楚,文档似乎也没有解释。您不能在 Python 中声明变量并且变量不是自动全局的,即如果我只是在 setup() c = createGraphics(400,400) 中说然后在 draw() 中说 c.beginDraw() 我得到一个 NameError: global name 'c' is not defined 这不能简单地通过在上面的行中说 global c 来解决。

那是怎么做到的呢?

可以使用 global 修复。确保在初始化 canvas 的地方也使用 global,否则它是一个局部变量,您的全局 canvas 引用可能仍然是 None

这是一个基本示例:

# global reference
canvas = None

def setup():
    size(300, 300)
    # setup global canvas
    global canvas
    canvas = createGraphics(300, 300)

    canvas.beginDraw()
    canvas.background(0);
    canvas.noStroke()
    canvas.blendMode(DIFFERENCE)
    canvas.ellipse(150,150,150,150)
    canvas.endDraw()

def draw():
    # reference global canvas to draw
    global canvas
    image(canvas,0,0)

def mouseDragged():
    diameter = dist(mouseX,mouseY,pmouseX,pmouseY)
    # reference global canvas to update graphics
    global canvas
    canvas.beginDraw()
    canvas.ellipse(mouseX,mouseY,diameter,diameter)
    canvas.endDraw()