ipycanvas什么时候在画布上绘图?或者如何强制?

问题描述 投票:0回答:1

我尝试为我的学生在 Jupyter 中编写类似迷你游戏的东西,让他们像在 Swift 游乐场中一样学习人物在应用不同命令时的行为方式。 我写了以下内容:

from ipywidgets import Image
from ipycanvas import *
import time 

char = Image.from_file("Bilder/charRight.png")

bg = Image.from_file("Bilder/map.png")

xchar=150
ychar=170
tilesize = 48

canvas = Canvas(height=800, width=800)
canvas.draw_image(bg,0,0 )
canvas.draw_image(char, xchar, ychar)

def step():
    time.sleep(3)
    global xchar
    global ychar
    global char
    canvas.draw_image(bg,0,0 )
    xchar = xchar+tilesize
    canvas.draw_image(char, xchar, ychar)

step()
print("yay")
step()
print("yay")
canvas

但我不明白,为什么它不单独显示每个步骤,而是全部显示在最后? 如果你想推荐其他模块,我想使用的环境只能与用 python 编写的模块一起使用。否则我会尝试 pygame。

我尝试在几个点上添加画布,认为这会强制它绘制,但没有这样做。

canvas jupyter-notebook draw ipycanvas
1个回答
0
投票

我会尽快更新。它还不能工作,但在完整的 Python 内核中,它不会等到结束才显示任何内容。 (来自“启动活页夹”徽章的会话此处。)我认为部分问题是您没有正确使用 Jupyter 的

display()
或 ipywidgets 进行正确处理:

from ipywidgets import Image
from ipycanvas import *
import time 

char = Image.from_file("single_document_mode_in_JupyterLab.png")

bg = Image.from_file("ClassicNb_interface.png")

xchar=150
ychar=170
tilesize = 48

canvas = Canvas(height=800, width=800)
canvas.draw_image(bg,0,0 )
canvas.draw_image(char, xchar, ychar)

def step():
    time.sleep(3)
    global xchar
    global ychar
    global char
    canvas.draw_image(bg,0,0 )
    xchar = xchar+tilesize
    canvas.draw_image(char, xchar, ychar)
    display(canvas)

step()
print("yay")
step()
print("yay")

如果您希望文本位于画布附近的任何位置,那么您实际上并不需要

print()
。但我不确定你为什么使用
print()
。我想只是为了显示变化?

© www.soinside.com 2019 - 2024. All rights reserved.