PyGame设置os.environ['SDL_VIDEO_WINDOW_POS']不生效问题问询
失效原因
SDL_VIDEO_WINDOW_POS 是SDL库在初始化窗口时读取的环境变量,仅在调用pg.display.set_mode()创建/重置窗口前修改才会生效。你当前代码的执行顺序是先创建/切换窗口,再修改环境变量,修改完成时窗口已经生成完毕,自然不会触发位置更新。
修正要点
- 所有设置窗口位置的操作,必须放到对应
pg.display.set_mode()调用的前面 - 全屏模式下窗口固定铺满屏幕,位置参数无效,不需要额外设置
- 如果需要初始启动的窗口就位于指定位置,需要在第一次调用
pg.display.set_mode()之前就完成环境变量的设置
完整修正代码
import pygame as pg from tkinter import messagebox as mb import time import sys import requests import os def setgamewindowcenter(): x = 500 y = 100 os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (x,y) print(os.environ['SDL_VIDEO_WINDOW_POS']) # 初始窗口位置提前设置 setgamewindowcenter() pg.init() sc = pg.display.set_mode((1000,750)) try: testimg143 = open("Data\\test.txt", "r") except: ud = "ginfo\\" else: ud = "" testimg143.close() #main game loop gamewindowfullscreen = False while True: for event in pg.event.get(): if (event.type == pg.KEYUP): if (event.key == pg.K_F11): if (gamewindowfullscreen == False): sc = pg.display.set_mode((0,0), pg.FULLSCREEN) gamewindowfullscreen = True else: # 切换回窗口模式前先设置位置 setgamewindowcenter() sc = pg.display.set_mode((1000,750)) gamewindowfullscreen = False if event.type == pg.QUIT: pg.quit() exit()
内容的提问来源于stack exchange,提问作者Jeweled
相关产品推荐
相关产品推荐

