是否有另一种获取窗口尺寸而非pygame.display.Info()
或曲面pygame.display.set_mode()
返回的方法?
我正在使用可调整大小的窗口开发一个软件。虽然设置默认尺寸对于大多数窗口管理器来说都是可以的,但是平铺尺寸(例如Awesome,Xmonad等)会使窗口非常适合他们选择的动态尺寸。在SDL创建初始窗口后,此重新安装发生得如此之快,它不会生成具有新(正确)维度的pygame.VIDEORESIZE
事件。
现在情况很好,如果一开始我生成一个虚假的videoresize事件,新的大小为0:
P.event.post(P.event.Event(P.VIDEORESIZE, size=(0,0), w=0, h=0))
至少Xmonad会看到这个并再次调整大小。我有一种预感,它与传统的窗口管理器不一样。可能窗口可以覆盖所有屏幕区域。
有没有更好的方法来确定帧大小?
答案 0 :(得分:1)
在pygame.event.get()下有event.size,event.h和event.w,它检索窗口尺寸
所以例如我通过调用even.w,event.h重新调整背景颜色的大小,因为否则屏幕会重新调整大小,但我会得到一个白色方块。你也可以使用list_modes然后用index来调用你认为你想要的列表从大到小,所以[0]是全屏的
for event in pygame.event.get():
if event.type == QUIT:
terminate()
elif event.type == KEYDOWN and event.key == K_ESCAPE:
terminate()
elif event.type == VIDEORESIZE:
displaysurf = pygame.display.set_mode((event.w, event.h),RESIZABLE)
displaysurf.fill(WHITE)
elif event.type == KEYDOWN and event.key == K_f:
displaysurf = pygame.display.set_mode(pygame.display.list_modes()[0],RESIZABLE)
displaysurf.fill(WHITE)
pygame.event.clear()