在通过sdl2通过pysdl2播放时,我注意到了这种奇怪的副作用,一旦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脚本时。请注意,尽管我用力地拖动窗口,但它仍然顽固地不透明。
发布于 2019-06-24 02:13:20
我也可以在我的Ubuntu桌面上使用Unity,所以它绝对不是你的KDE桌面的问题。我认为这是pysdl2中的一个bug,在修复之前,这个解决方案应该是一个临时的解决方案,但同时,您可以将其添加到while循环中:
window.get_surface()这个问题已经在这里报道了:https://github.com/marcusva/py-sdl2/issues/139
https://stackoverflow.com/questions/56053077
复制相似问题