text: import sys
  import pygame  # pylint: disable=import-error
  import cv2  # pylint: disable=import-error
  
  class Window():
    def __init__(self, w, h, caption="window", double=False, halve=False):
      self.w = w
      self.h = h
      pygame.display.init()
      pygame.display.set_caption(caption)
      self.double = double
      self.halve = halve
      if self.double:
        self.rw, self.rh = w*2, h*2
      elif self.halve:
        self.rw, self.rh = w//2, h//2
      else:
        self.rw, self.rh = w, h
      self.screen = pygame.display.set_mode((self.rw, self.rh))
      pygame.display.flip()
  
      # hack for xmonad, it shrinks the window by 6 pixels after the display.flip
      if self.screen.get_width() != self.rw:
        self.screen = pygame.display.set_mode((self.rw+(self.rw-self.screen.get_width()), self.rh+(self.rh-self.screen.get_height())))
        pygame.display.flip()
  
    def draw(self, out):
      pygame.event.pump()
      if self.double:
        out2 = cv2.resize(out, (self.w*2, self.h*2))
        pygame.surfarray.blit_array(self.screen, out2.swapaxes(0, 1))
      elif self.halve:
        out2 = cv2.resize(out, (self.w//2, self.h//2))
        pygame.surfarray.blit_array(self.screen, out2.swapaxes(0, 1))
      else:
        pygame.surfarray.blit_array(self.screen, out.swapaxes(0, 1))
      pygame.display.flip()
  
    def getkey(self):
      while 1:
        event = pygame.event.wait()
        if event.type == pygame.QUIT:
          pygame.quit()
          sys.exit()
        if event.type == pygame.KEYDOWN:
          return event.key
  
    def getclick(self):
      for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN:
          mx, my = pygame.mouse.get_pos()
          return mx, my
  
  if __name__ == "__main__":
    import numpy as np
    win = Window(200, 200, double=True)
    img = np.zeros((200, 200, 3), np.uint8)
    while 1:
      print("draw")
      img += 1
      win.draw(img)
  