I have written a python script to create a resizeable sdl2 window. That works. However, I don’t seem to be able to get sdl2.SDL_WINDOWEVENT sdl2.SDL_WINDOWEVENT_SIZE_CHANGED sdl2.SDL_WINDOWEVENT_RESIZE to respond. Below is my script.
Please advice how I can print out the new window size each time the window size changes.
#!/bin/env python3
''' SDL2 Window. '''
__author__ = 'sunbearc22'
import sdl2
import sdl2.ext
class SetWindow:
""" Class to create, destroy and manage sdl2 window."""
def __init__(self, title="SDL2 Window", x=sdl2.SDL_WINDOWPOS_UNDEFINED,
y=sdl2.SDL_WINDOWPOS_UNDEFINED, w=400, h=400, flags=0):
"""Initialisation"""
self.title = title
self.x = x
self.y = y
self.w = w
self.h = h
self.flags = flags
print('SDL2 Window parameters initialised')
self._create()
def _create(self):
'''Create SDL2 Window'''
if sdl2.SDL_Init( sdl2.SDL_INIT_VIDEO ) != 0:
print('SDL2 library with video flag fail to initialise')
exit()
print('SDL2 library with video flag initialised.')
self.window = sdl2.SDL_CreateWindow(
self.title.encode('ascii'), self.x, self.y, self.w, self.h,
self.flags)
if not self.window:
print('Fail to create SDL2 window.')
exit()
print('Created SDL2 Window: {}.'.format(self.title))
def getWindowSize(self):
'''Get SDL2 Window width & height '''
sdl2.SDL_GetWindowSize( self.window, w, h )
print('sdlWindowsize = {}'.format( [w, h]))
return w, h
def destroy(self):
'''Destroy and quit SDL2 window'''
sdl2.SDL_DestroyWindow(self.window) # Close and destroy SDL2 window
sdl2.SDL_Quit() # Clean up SDL2
print('Destroyed SDL2 window and quited SDL2')
def main():
vflags = sdl2.SDL_WINDOW_RESIZABLE
window = SetWindow(title="Test Window - Resizable", w=800, h=200,
flags=vflags)
# Main loop
running = True
print('SDL2 Main Loop: Executing.')
while running:
#Check for any events that piled up since the last check.
events = sdl2.ext.get_events()
for event in events:
if event.type == sdl2.SDL_QUIT:
print('SDL2 Main Loop: sdl2.SDL_QUIT.')
running = False
break
if event.type == sdl2.SDL_WINDOWEVENT:
if event.type == sdl2.SDL_WINDOWEVENT_SIZE_CHANGED:
print('SDL_WINDOWEVENT_SIZE_CHANGED')
print('window.data1, window.data2 = ',
event.window.data1, event.window.data2)
newWidth, newHeight = window.getWindowSize()
break
if event.type == sdl2.SDL_WINDOWEVENT_RESIZED:
print('SDL_WINDOWEVENT_RESIZED')
print('window.data1, window.data2 = ',
event.window.data1, event.window.data2)
newWidth, newHeight = window.getWindowSize()
break
if not running:
window.destroy()
if __name__ == '__main__':
main()