gpt4 book ai didi

python - 制作一个可以捕捉到屏幕的 pygame 可调整大小的窗口

转载 作者:行者123 更新时间:2023-12-02 06:05:27 26 4
gpt4 key购买 nike

我创建了一个简单的屏幕:

user_display = pg.display.Info()

win = pg.display.set_mode((user_display.current_w, user_display.current_h), pg.RESIZABLE)

这将创建一个可以调整大小的窗口,它将自身设置为用户当前的屏幕大小。这样做的问题是 window 的位置出现在角落处。理想情况下,默认情况下单击窗口顶部的全屏图标时会发生所需的效果。有没有办法设置让屏幕自动对齐到顶部?

最佳答案

我猜你说的是最大化窗口,而不是全屏模式。

如果您只关心 Windows,则可以使用 Win32-API 来最大化窗口(使用 win32gui 模块):

import pygame
import win32gui
import win32con

def main():
pygame.init()
screen = pygame.display.set_mode((800, 600), pygame.RESIZABLE)
win32gui.ShowWindow(win32gui.GetForegroundWindow(), win32con.SW_MAXIMIZE)

ball = pygame.Rect(0, 300, 32, 32)
dir = 1

while True:
events = pygame.event.get()

for e in events:
if e.type == pygame.QUIT:
return
if e.type == pygame.VIDEORESIZE:
screen = pygame.display.set_mode((e.w,e.h), pygame.RESIZABLE)
ball = pygame.Rect(0, int(e.h/2), 32, 32)

if not screen.get_rect().contains(ball):
dir *= -1
ball.move_ip(dir, 0)

screen.fill((30, 30, 30))
pygame.draw.rect(screen, pygame.Color("dodgerblue"), ball)
pygame.display.flip()
main()

如果您想在其他系统(例如 Linux)上最大化窗口,我不知道,但您可以将 pygame 窗口包装在 tkinter 窗口中并最大化:

import pygame
import tkinter as tk
import os

def main():
root = tk.Tk()
embed = tk.Frame(root, width = 800, height = 600)
embed.pack(fill="both", expand=True)
os.environ['SDL_WINDOWID'] = str(embed.winfo_id())
os.environ['SDL_VIDEODRIVER'] = 'windib'
root.state('zoomed')
screen = pygame.display.set_mode((800, 600), pygame.RESIZABLE)

ball = pygame.Rect(0, 300, 32, 32)
dir = 1

while True:
events = pygame.event.get()

for e in events:
if e.type == pygame.QUIT:
return
if e.type == pygame.VIDEORESIZE:
screen = pygame.display.set_mode((e.w,e.h), pygame.RESIZABLE)
ball = pygame.Rect(0, int(e.h/2), 32, 32)

if not screen.get_rect().contains(ball):
dir *= -1
ball.move_ip(dir, 0)

screen.fill((30, 30, 30))
pygame.draw.rect(screen, pygame.Color("dodgerblue"), ball)
pygame.display.flip()
root.update()
main()

关于python - 制作一个可以捕捉到屏幕的 pygame 可调整大小的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62034222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com