In the game I'm making, I'm trying to move the window around the screen for a mini game (don't ask) and I've tried what I saw own threads and only found 1
x = 100
y = 0
import os
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (x,y)import pygame
pygame.init()
screen = pygame.display.set_mode((100,100))# wait for a while to show the window.
import time
time.sleep(2)
and it doesn't work
(keep in mind I'm not super experienced and currently code as a hobby)
Check out the below code. I kind of combined two different answers, but it seems like it will be pretty difficult without using Tkinter. Thankfully I don't think Tkinter will get in the way of your application too much (seemed to work pretty easily here).
# Moving a pygame window with Tkinter.
# Used code from:
# https://stackoverflow.com/questions/8584272/using-pygame-features-in-tkinter
# https://stackoverflow.com/questions/31797063/how-to-move-the-entire-window-to-a-place-on-the-screen-tkinter-python3import tkinter as tk
import os, randomw, h = 400, 500# Tkinter Stuffs
root = tk.Tk()
embed = tk.Frame(root, width=w, height=h)
embed.pack()os.environ['SDL_WINDOWID'] = str(embed.winfo_id())
os.environ['SDL_VIDEODRIVER'] = 'windib' # This was needed to work on my windows machine.root.update()# Pygame Stuffs
import pygame
pygame.display.init()
screen = pygame.display.set_mode((w, h))# This just gets the size of your screen (assuming the screen isn't affected by display scaling).
screen_full_size = pygame.display.list_modes()[0]# Basic Pygame loop
done = False
while not done:for event in pygame.event.get():if event.type == pygame.QUIT:done = Trueif event.type == pygame.KEYDOWN:if event.key == pygame.K_ESCAPE:done = Trueif event.key == pygame.K_SPACE:# Press space to move the window to a random location.r_w = random.randint(0, screen_full_size[0])r_h = random.randint(0, screen_full_size[1])root.geometry("+"+str(r_w)+"+"+str(r_h))# Set to green just so we know when it is finished loading.screen.fill((0, 220, 0))pygame.display.flip()root.update()pygame.quit()
root.destroy()