【问题标题】:Using Processing PGraphics in Python Mode?在 Python 模式下使用处理 PGraphics?
【发布时间】:2020-04-10 12:11:01
【问题描述】:
在 Processing 的 Java 模式中,您可以通过全局声明 PGraphics 对象、在 setup() 中使用 createGraphics() 设置它们,然后在 draw() 中引用它们来使用 PGraphics 对象。
在 Python 模式下,做什么不是很清楚,文档似乎也没有解释。你不能在 Python 中声明变量并且变量不是自动全局的,即如果我只是在 setup() c = createGraphics(400,400) 中说然后在 draw() 中说 c.beginDraw() 我得到一个 NameError: global name 'c' is not defined 这不能简单地通过在上面的行中说 global c 来修复。
那么它是怎么做到的呢?
【问题讨论】:
标签:
python
processing
pgraphics
【解决方案1】:
可以使用global 修复它。一定要在你初始化画布的地方也使用全局,否则它是一个局部变量,你的全局画布引用可能仍然是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()