问题标签 [pysdl2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
629 浏览

python - 如何使用 PySDL2 将 SDL_Surface 传递给 SDL_LockTexture?

我正在尝试将 SDL_Surface 成员传递给 SDL_LockTexture:

SDL_Surface 在这里定义:surface.py

SDL_LockTexture 在这里定义:render.py

在调用 SDL_CreateRGBSurface 后,调试器说表面的像素和间距成员都是 int 类型。我究竟做错了什么?

0 投票
1 回答
609 浏览

python - pysdl2 访问冲突显示图像

我正在尝试在 Windows 机器上开始使用 pysdl2。到目前为止,我刚刚复制并粘贴了Hello World 教程,只是为了看看它是否真的有效!它不是。

当我运行程序时,它会短暂显示一个窗口,然后崩溃并出现以下错误:

虽然地址每次都不一样。

这似乎只发生在较大的图像上 - 如果我将图像调整为245 x 245像素或更小,那么它将毫无怨言地显示。我正在使用 Pillow 来改进格式支持,并在bmp,pngjpg.

编辑添加:

今天,我一直在戳这个试图理解。我的像素测试图像245x245将不再起作用,除非我在创建 spriterenderer 和调用render(sprite)它之间做了一些事情 - 我print sprite出于兴趣在这些行之间添加,以查看变量中是否真的有什么东西,并且它显示。注释掉该print行,它会失败。然后我将相同的图像放大,500x500access violation再次出现错误。我不知道发生了什么。

0 投票
1 回答
1016 浏览

python - 在 python3 中导入 sdl2 时出错

我有一个文件 test.py,其中仅包含“import sdl2”行。我正在运行 Ubuntu,并从官方 repos 安装了 libsdl2,并从 pip3 安装了 pysdl2。我收到此错误:

我唯一的想法是软件包中可能存在一些版本不匹配?快速谷歌搜索后,我找不到任何引用此错误的内容。

0 投票
1 回答
296 浏览

python - pySDL2 显示没有结束循环

在我发现的每个 pySLD2 示例中,我都在代码末尾看到了一个循环,以保持窗口打开直到关闭。例如:

我见过的所有事件处理程序都被阻塞了。有没有办法,就像我在标准 SDL 中看到的那样,在保持打开的窗口上简单地调用初始化和更新函数。我写这篇文章是为了把它写成一个外部库,我可以独立于任何项目调用它。

有任何想法吗?谢谢!

编辑:根据要求在标准 SDL 中执行此操作的方法,方法有效。只需调用 init 函数来设置屏幕,它会一直保持到您关闭它为止。

0 投票
1 回答
261 浏览

python - PySDL2 和 SDL_FreeSurface

我正在使用 PySDL2,在阅读示例时,我注意到示例调用sdl2.SDL_FreeSurface(image). 我想知道,如果我不使用 FreeSurface,会不会造成内存泄漏?垃圾收集不处理这个吗?

0 投票
3 回答
2835 浏览

python - 在 Windows 上安装 PySDL2 时遇到问题。(无模块错误)

所以我刚刚尝试安装 pySDL2,但我一直收到错误消息:

我已经按照网站上的说明进行操作,所以我不知道为什么这不起作用。而且我没有看到其他人问这个问题。

1: 我从 BitBucket 下载:“PySDL2-0.9.2.zip”。

2: 我解压文件夹并将内容移出。

3: 我去我的命令行,然后导航到包含 setup.py 的目录

4: 我输入(按照说明): python setup.py install

5: 安装似乎工作正常,一旦命令行返回给我,我就将其关闭。

6: 导航到示例文件夹,并尝试运行示例:

ImportError:没有名为“sdl2.util”的模块

然后我尝试导入 sdl2,这导致了同样的错误。谁能告诉我为什么我会收到这些错误?或者我可能做错了什么?我不知道还能提供什么信息。我真的只遵循提供的几个步骤,由于某种原因,我似乎无法从 python 访问 SDL2 。.


[更新]

所以现在已经删除了 sdl2.util 错误。我已将 SDL2 所需的 DLL 安装到 Python33 的DLLs文件夹中。然后我尝试将 DLL 的环境变量设置为它的位置。(这样我就不会再收到关于缺少库等的错误)。但这实际上并不能解决问题。本教程明确指出,应从命令行运行此命令以解决我的问题:

设置 PYSDL2_DLL_PATH=C:\path\to\fancy_project\third_party

然后我将其修改为指向 DLL 文件的位置:

设置 PYSDL2_DLL_PATH=C:\Python33\Dlls

没事吧?没有。出于某种原因,这只是行不通。每次我想运行一个示例时,我都需要不断地设置环境变量,如下所示:

如果我不包括这个,我会收到以下错误:

看起来我的环境变量没有设置,但我不知道为什么会这样。我已经尝试设置了几次并重新启动了一次。然而,这种情况仍然存在。如果有人可以提供帮助,那就太好了。

0 投票
1 回答
1440 浏览

python - PySDL2:创建无边框窗口

我一直在尝试寻找如何在 PySDL2 中创建一个无边框窗口(不是使用典型的窗口边框创建的)。

我查看了可以在网上找到的资源,但无法确定任何可以告诉我如何完成此任务的资源,尽管这显然是可能的


研究:

  1. 该链接指出,在大多数情况下,您的窗口周围都有一个边框和标题栏,但从未详细说明如何操作它。

  2. 我查看了 SDL 的 Window 的一些 API 参考,并没有看到可以操纵边框。(没有说他们不可能,只是没有提及)


尽管没有找到任何与 PySDL2 相关的内容,但我确实在此链接中发现:

不幸的是,我无法在我的简单示例脚本中使用它。

感谢您的关注!

0 投票
1 回答
404 浏览

python - 在 PySDL2 中更新窗口位置(帮助!)

我目前正在尝试更改我在 PySDL2 中创建的窗口的位置,在它已经被渲染之后。

我试过更新Window.position窗口的属性。但是尽管这样做了,并且让表面自行刷新,但没有可见的变化。(窗口停留在最初绘制的位置)。

我知道我可以更改窗口位置,因为如果我更改窗口创建行中的位置,它会在最初绘制在屏幕上时发生更改。(你只是似乎无法改变它之后)

代码:

我的尝试只是更新窗口的 .position 属性。但就像我之前所说的,似乎什么都没有发生。

编辑:根据这篇博文。这几乎是不可能的。

0 投票
1 回答
1592 浏览

window - PySDL2:用于处理颜色和文本的渲染器或窗口表面?

我的问题sdl2.ext.Renderer主要与我在尝试在sdl2.ext.Window表面上渲染精灵时遇到的问题有关。

所以现在,为了在 SDL2 窗口上着色我的背景,我进行了以下调用:

这会将 Window 的表面着色为白色背景。但是,我也想在屏幕上显示文本。这是通过TextureSprite使用类的from_text方法创建一个来完成的sdl2.ext.SpriteFactory,如下所示:

运行事件循环时会出现问题。

完整示例粘贴

当同时调用 Renderer.present() 和 W.refresh() 时,我会从屏幕上看到闪烁效果。这似乎是因为渲染器覆盖了白色窗口表面,然后通过 Window.refresh() 调用再次着色。然后重复,导致闪烁的混乱。

我想知道我能做些什么来解决这个问题?我是否应该同时使用 Window.refresh() 和 Renderer?有没有办法让一个渲染另一个?(例如渲染器渲染背景)。如果有人可以帮助我,那就太好了。

0 投票
1 回答
625 浏览

python - How do you access pySDL2 SoftwareSpriteRenderSystem Blendmode?

The problem is very simple. I want to change the Blendmode for my SDL2 Renderer in Python, but I don't know how to access the Renderer.

The PySDL2 Documentation here states that you can define colors with an Alpha channel:

class sdl2.ext.Renderer

blendmode: The blend mode used for drawing operations (fill and line). This can be a value of

. SDL_BLENDMODE_NONE for no blending

. SDL_BLENDMODE_BLEND for alpha blending

. SDL_BLENDMODE_ADD for additive color blending

. SDL_BLENDMODE_MOD for multiplied color blending

All I need is to set the Blendmode to SDL_BLENDMODE_BLEND so that I can use the Alpha channels. My problem is that I'm using a SoftwareSpriteRenderSystem

There isn't any clear way to change the blendmode here. I can try doing the following:

But this returns:

ArgumentError: argument 1: <type 'exceptions.TypeError'>: expected LP_SDL_Renderer instance instead of SoftwareSpriteRenderSystem

Could anyone help me out please? I'd just like to be able to get some transparent Sprites (from_rect sprites), but it's proving difficult because the SDL_renderer is inaccessible.