【问题标题】:PySDL2: Creating a borderless windowPySDL2:创建无边框窗口
【发布时间】:2014-06-28 14:37:19
【问题描述】:

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

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


研究:

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

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


尽管没有找到任何与 PySDL2 相关的内容,但我确实找到了 at this link

sdl.setWindowBordered(window, bordered)
Sets the border state of a window.

很遗憾,我无法在 my simple example script 中使用它。

感谢收看!

【问题讨论】:

  • 更新了我的答案以使用 sdl2.ext...

标签: python borderless pysdl2


【解决方案1】:

您需要确保您拥有标志:SDL_WINDOW_BORDERLESS

完整示例:

import sys
import sdl2.ext

sdl2.ext.init()

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

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

稍微修改你的脚本,我们得到:

import sys
import sdl2.ext

def run():
    sdl2.ext.init()
    W = sdl2.ext.Window("Default",size=(400,300), flags=sdl2.SDL_WINDOW_BORDERLESS)
    W.show()
    running = True
    while running:
        events = sdl2.ext.get_events()
        for event in events:
            if event.type == sdl2.SDL_QUIT:
                running = False
                break
        W.refresh()
    return 0

if __name__ == "__main__":
    sys.exit(run())

【讨论】:

  • 嘿,这似乎有效!谢谢。我只是想知道为什么什么都没有出现。我有点期待一个无边界的区块。当我将鼠标悬停在打开的 IDLE 图标上时,我可以看到轮廓,但仅此而已。我需要先用一些东西填充窗口吗?
  • @Owatch:如果这就是你的意思,默认情况下窗口只是黑色。不过你可以在里面画东西,这不会让它变黑。
  • 嗯,它实际上是完全透明的。 (完全没有背景)。但是我现在已经设法添加了一个,使用 SoftwareSpriteRenderSystem,以及教程中的一个示例!是否可以构建自己的 Window 类型?如,我自己向窗口添加一个关闭和最小化按钮?
  • @Owatch:我相信您可以自己创建按钮并在它们被点击时调用相应的 SDL 事件。但这是一个不同的问题......
猜你喜欢
  • 1970-01-01
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多