我正在使用pygame和pyro在python中开发一个项目。我可以轻松地发送数据,函数,类等。但是,我不能在电线上发送表面而不会在运输途中死亡。
服务器在通过网络访问的类def __init__
中创建一个表面:
self.screen = pygame.display.set_mode(SCREENRECT.size, NOFRAME)
在服务器上,屏幕打印为Surface(800x800x32 SW)
,但客户端检索时为Surface(Dead Display)
。
要注意的事情。当我使用访问器功能来获取我的屏幕时,我得到一个死显示。如果我使用print Player.screen
来获取变量,我会得到一个似乎是指向屏幕的pyro指针:<Pyro.core._RemoteMethod instance at 0x02B7B7B0>
。也许我可以解除这个?
我很可能很厚,有没有人有洞察力?谢谢。 :)
答案 0 :(得分:6)
pygame Surface是底层SDL表面的包装,我怀疑它不能被Pyro序列化。如果你想通过网络复制它的内容,你最好做这样的事情:
修改强> 我突然意识到我过度复杂了。要序列化Surface,请使用pygame.image.tostring(),然后重新加载,请使用pygame.image.fromstring()。
答案 1 :(得分:1)
一般来说,您不希望通过网络发送Surface(我假设Surface是依赖于设备的显示)。大多数情况下,您的客户将负责管理其本地Surface上的绘图,您的服务器负责告诉客户端需要绘制什么。服务器甚至可能没有能够显示图形的显示器!
答案 2 :(得分:0)
尝试腌制对象并发送文件......