Python pysdl2访问冲突显示图像

Python pysdl2访问冲突显示图像,python,sdl-2,pysdl2,Python,Sdl 2,Pysdl2,我正在尝试在windows计算机上开始使用pysdl2。到目前为止,我只是复制和粘贴的,只是为了让我可以看看它是否真的工作!事实并非如此 import sys import sdl2.ext RESOURCES = sdl2.ext.Resources(__file__, "resources") sdl2.ext.init() window = sdl2.ext.Window("Hello World!", size=(640, 580)) window.show() factory

我正在尝试在windows计算机上开始使用pysdl2。到目前为止,我只是复制和粘贴的,只是为了让我可以看看它是否真的工作!事实并非如此

import sys
import sdl2.ext

RESOURCES = sdl2.ext.Resources(__file__, "resources")

sdl2.ext.init()

window = sdl2.ext.Window("Hello World!", size=(640, 580))
window.show()

factory = sdl2.ext.SpriteFactory(sdl2.ext.SOFTWARE)
sprite = factory.from_image(RESOURCES.get_path("testimage.png"))

spriterenderer = factory.create_sprite_render_system(window)
spriterenderer.render(sprite)

processor = sdl2.ext.TestEventProcessor()
processor.run(window)

sdl2.ext.quit()
当我运行该程序时,它会短暂显示一个窗口,然后由于以下错误而崩溃:

Traceback (most recent call last):
  File "test.py", line 15, in <module>
    spriterenderer.render(sprite)
  File "C:\Python27\lib\site-packages\sdl2\ext\sprite.py", line 643, in render
    surface.SDL_BlitSurface(sprites.surface, None, self.surface, r)
WindowsError: exception: access violation reading 0x03F3B000
回溯(最近一次呼叫最后一次):
文件“test.py”,第15行,在
精灵渲染器。渲染(精灵)
文件“C:\Python27\lib\site packages\sdl2\ext\sprite.py”,第643行,在render中
surface.SDL_BlitSurface(sprites.surface,无,self.surface,r)
WindowsError:异常:访问冲突读取0x03F3B000
虽然每次的地址都不一样

这似乎只发生在较大的图像上-如果我将图像大小调整为
245 x 245
像素或更小,那么它将毫无疑问地显示出来。我正在使用Pizz来改进格式支持,并在
bmp
png
jpg
中遇到了同样的问题

编辑以添加:


今天,我又在试着理解这个问题。我的测试图像是
245x245
像素,如果我在创建SpriteRender和调用
render(sprite)
之间做了一些事情,那么它就不能再工作了。出于兴趣,我在这些行之间添加了
print sprite
,以查看变量中是否确实存在某些内容,并显示出来。注释掉
打印
行,它将失败。然后,我将相同的图像放大,
500x500
,并再次得到
访问冲突
错误。我不知道发生了什么事

您使用的SDL版本是什么?这是Mercurial的最新开发产品吗

如果是这样的话,它可能会不稳定,并且有一个bug,不允许它在Windows上正常运行,在我的例子中,它在Arch和Windows的稳定版本上都可以正常工作

返回的错误有一个WindowsError,可能是由于使用了DLL文件


如果您使用的是不稳定的版本,请尝试使用稳定的版本。以后可能会有用。

嗨,谢谢你的回答。我在这里使用的是稳定的2.0.3版本,我只是将运行时二进制文件下载中的.dll拖到我的system32文件夹中,然后安装了pySDL2