【问题标题】:Strange sdl side-effect on unrelated windows对无关窗口的奇怪 sdl 副作用
【发布时间】:2019-09-26 21:58:21
【问题描述】:

当通过 pysdl2 玩 sdl2 时,我注意到了这种奇怪的副作用,即一旦 sdl 脚本运行不相关的窗口,这些窗口通常会在移动时变得半透明,现在却保持不透明。

如果不是那种唠叨的感觉,我不会那么介意 这表明我在做一些根本错误的事情。

谁能告诉我这里到底发生了什么?

这是我的脚本:

import sdl2
import sdl2.ext as se
import time

def main():
    k = 2
    event_buffer = (k * sdl2.SDL_Event)()
    se.init()
    window = se.Window("what the ?", size=(400, 300))
    window.show()
    while True:
        window.refresh()
        time.sleep(0.01)
        sdl2.SDL_PumpEvents()
        sdl2.SDL_PeepEvents(event_buffer, k, sdl2.SDL_GETEVENT,
                            sdl2.SDL_FIRSTEVENT, sdl2.SDL_LASTEVENT)
        for event in event_buffer:
            if not event.type:
                continue
            elif event.type == sdl2.SDL_QUIT:
                se.quit()
                break
            else:
                pass
            event.type = 0
        else:
            continue
        break

if __name__ == '__main__':
    main()

这里是之前和之后的屏幕截图:

我的KDE 5.45.0 桌面的系统设置窗口没有运行 sdl 脚本,显示相关设置桌面Effects>Translucency。注意窗口是半透明的,因为我在拍照时拖动它。

相同,但运行 sdl 脚本。请注意,尽管我大力拖动窗口,但它仍然顽固地不透明。

【问题讨论】:

  • 您能否在一个新的、干净的用户帐户上进行复制?
  • @genpfault 刚刚做了。不同计算机(相同操作系统)上的新用户帐户。同样的观察。
  • 什么样的 KDE 会话,X11 或 Wayland? Python版本? pysdl2 版本?底层 SDL2 版本?
  • @genpfault 这是 Python 3.6.5 -- pysdl 0.9.6。 sdl2 在一台计算机上是 2.0.0,在另一台计算机上是 2.0.9。 KDE 会话我认为是 X11(有一个 kwin_x11 进程正在运行并且没有包含单词 wayland)
  • 可能相关:我看到在一些 SDL 游戏中,kde 效果会被停用(并在游戏退出时重新激活)。

标签: python sdl kde window-management pysdl2


【解决方案1】:

我也可以使用 Unity 在我的 Ubuntu 桌面上重现此问题,所以这绝对不是您的 KDE 桌面的问题。我认为这是 pysdl2 中的一个错误,这个解决方案应该是一个临时解决方法,直到它得到修复,但与此同时,你可以在你的 while 循环中添加它:

window.get_surface()

此问题已在此处报告:https://github.com/marcusva/py-sdl2/issues/139

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多