pygame实现全屏模式和窗口大小可调

您所在的位置:网站首页 电脑如何取消全屏窗口模式切换 pygame实现全屏模式和窗口大小可调

pygame实现全屏模式和窗口大小可调

2024-07-14 16:34:26| 来源: 网络整理| 查看: 265

pygame如何实现全屏模式和窗口大小可调

在pygame中可以设置通过pygame.display.set_mode(size=(0, 0), flags=0, depth=0)对窗口参数进行设置,这个函数会返回一个Surface对象。

在四个参数中,size表示窗口大小,flags参数可以控制窗口模式,depth参数表示颜色的位数

flags参数:

pygame.FULLSCREEN 创建全屏的窗口pygame.DOUBLEBUF 使用HWSURFACE或OPENGL时建议加上这个标志pygame.HWSURFACE 使用硬件加速,只在FULLSCREEN时有效pygame.OPENGL 创建一个可以使用opengl的窗口pygame.RESIZABLE 窗口可变大小pygame.NOFRAME 窗口没有边框和控制条

想要实现按下F11全屏模式,并且窗口大小可调,可以参考以下代码

import pygame, sys from pygame.locals import * def main(): global screen, WINDOWWIDTH, WINDOWHEIGHT SIZE = WINDOWWIDTH, WINDOWHEIGHT = 1000, 800 fps = pygame.time.Clock() isfullscreen = False pygame.init() screen = pygame.display.set_mode(SIZE, RESIZABLE) screen.fill((255,255,255)) # 背景颜色白色 while True: isfullscreen = Resize(isfullscreen) for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN: if event.key == K_ESCAPE: pygame.quit() sys.exit() pygame.display.update() screen.fill((255,255,255)) fps.tick(30) def Resize(isfullscreen): # 这个函数中必须先判断窗口大小是否变化,在判断是否全屏 # 否则,在全屏之后,pygame会判定为全屏操作也是改变窗体大小的一个操作,所以会显示一个比较大的窗口但不是全屏模式 for event in pygame.event.get(VIDEORESIZE): size = WINDOWWIDTH, WINDOWHEIGHT = event.size[0], event.size[1] screen = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), RESIZABLE) for event in pygame.event.get(KEYDOWN): if event.key == K_F11: if not isfullscreen: isfullscreen = True SIZE = WINDOWWIDTH, WINDOWHEIGHT = pygame.display.list_modes()[0] screen = pygame.display.set_mode(SIZE, FULLSCREEN) else: isfullscreen = False SIZE = WINDOWWIDTH, WINDOWHEIGHT = 1000, 800 screen = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), RESIZABLE) pygame.event.post(event) return isfullscreen if __name__ == '__main__': main() 尚未解决的一些问题:

代码中的isfullscreen是用来判断窗体是否是全屏,起初想要用global设置为全局变量,但是经过尝试之后发现怎么样都会报错,尚未找出到底是哪里错误了。

一开始想要把游戏界面退出的代码也放在一个函数中,但是这样的话就发现按下F11之后屏幕在全屏和原来的模式之间来回闪烁,然后就闪退了,但是如果增加一个for event in pygame.event.get()获取事件的话,就不会有这种现象了。猜测是由于event事件没有被全部读取造成的。有无大佬指出错误,代码如下

def main(): global screen, isfullscreen, WINDOWWIDTH, WINDOWHEIGHT # 将isfullscreen也设置为全局变量 SIZE = WINDOWWIDTH, WINDOWHEIGHT = 1000, 800 fps = pygame.time.Clock() isfullscreen = False pygame.init() screen = pygame.display.set_mode(SIZE, RESIZABLE) screen.fill((255,255,255)) # 背景颜色白色 while True: checkQuit() Resize() pygame.event.get() # 增加事件获取函数 pygame.display.update() screen.fill((255,255,255)) fps.tick(30) # 退出游戏的函数 def terminate(): pygame.quit() sys.exit() def checkQuit(): for event in pygame.event.get(QUIT): terminate() for event in pygame.event.get(KEYDOWN): if event.key == K_ESCAPE: terminate() pygame.event.post(event) def Resize(): global isfullscreen, WINDOWWIDTH, WINDOWHEIGHT, screen # 添加global声明 for event in pygame.event.get(VIDEORESIZE): size = WINDOWWIDTH, WINDOWHEIGHT = event.size[0], event.size[1] screen = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), RESIZABLE) for event in pygame.event.get(KEYDOWN): if event.key == K_F11: if not isfullscreen: isfullscreen = True SIZE = WINDOWWIDTH, WINDOWHEIGHT = pygame.display.list_modes()[0] screen = pygame.display.set_mode(SIZE, FULLSCREEN) else: isfullscreen = False SIZE = WINDOWWIDTH, WINDOWHEIGHT = 1000, 800 screen = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), RESIZABLE) pygame.event.post(event) if __name__ == '__main__': main() 更新

经过一段时间过后的查找,解决了第一个问题。发现需要对全局变量进行赋值的时候,需要进行声明,在函数中使用global声明isfullscreen等变量,这样进行赋值的时候才会改变全局变量的值,所以对上面的代码进行了一定的修改

关于问题二,发现只要在Resize()函数后增加一行获取event事件的函数,或者删除Resize()函数中的post()函数,就不会有闪屏退出的情况了,证明上面的猜测是正确的的,在需要获取其他事件进行相应操作的时候可以使用post()函数返回获取到的KEYDOWN事件



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭