PySDL2: 创建无边框窗口

1 投票
1 回答
1835 浏览
提问于 2025-04-18 11:24

我一直在尝试找出如何在PySDL2中创建一个没有边框的窗口(也就是那种不是用普通窗口边框创建的窗口)。

我在网上查了很多资料,但始终没能找到具体的步骤来实现这个功能,尽管看起来是可能的


研究:

  1. 这个链接提到,在大多数情况下,你的窗口周围会有边框和标题栏,但没有更详细地说明如何去修改它。

  2. 我查看了一些关于SDL窗口的API参考,也没有看到可以修改边框的相关信息。(并不是说不能修改,只是没有提到)


虽然没有找到与PySDL2相关的内容,但我在这个链接上发现了:

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

不幸的是,我无法在我的简单示例脚本中让这个工作。

谢谢你的关注!

1 个回答

2

你需要确保你有这个标志: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())

撰写回答