IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python基础:第019课——窗口缩放事件、最小化状态及处理 -> 正文阅读

[Python知识库]Python基础:第019课——窗口缩放事件、最小化状态及处理

视频

观看视频

参考:

  1. pygame事件完整解析
  2. pygame中display模块介绍

创建主窗口及绘制图像

Pygame 使用pygame.display.set_mode创建游戏的主窗口:

screen = pygame.display.set_mode(size=(),flags=0)

上述函数有两个参数常用参数:

size:元组参数,用来设置主窗口的大小

flags:功能标志位,表示创建的主窗口样式,比如创建全屏窗口、无边框窗口等,flags 参数值见下表。

标志位功能
pygame.FULLSCREEN创建一个全屏窗口。
pygame.HWSURFACE创建一个硬件加速窗口,必须和 FULLSCREEN 同时使用。
pygame.OPENGL创建一个 OPENGL 渲染窗口。
pygame.RESIZABLE创建一个可以改变大小的窗口。
pygame.DOUBLEBUF创建一个双缓冲区窗口,建议在HWSURFACE 或者 OPENGL 时使用。
pygame.NOFRAME创建一个没有边框的窗口。

体验过电脑游戏的朋友们都知道,当运行程序后会在电脑桌面上出现一个游戏的主窗口,这个主窗口的本质是一个 surface 对象,把理解为画布、画板、白纸在合适不过了,它相当于一个载体,用于承载一切游戏所用到的元素。假如您需要将一段文本方放置到主窗口中,那么您需要先创建一个包含文本的 surface 对象,之后再将它附加到主窗口上。

主窗口(screen)相当于游戏程序中尺寸最大的 Surface 对象,在这个最大的“画布”中,我们还可以添加其他“小”的 Surface 对象,这些对象以矩形的形式存在于主窗口中,它们共同组成了一个游戏程序。通过下列方法可以将一个 Surface 对象粘贴至主窗口上:

scrren.blit(source, dest, area=None, special_flags = 0)

下面对上述参数做简单的介绍:

source:表示要粘贴的 Surface 对象。

dest:主窗口中的一个标识的坐标位置,可以接受一个(x,y)元组,或者(x,y,width,height)元组,也可以是一个 Rect 对象;

area:接受一个 Rect 对象,默认为 None,如果提供该参数则相当于抠图操作,这表示要绘制的源 Surface 的较小部分。

special_flags:可选参数,它是 Pygame.1.8 版本新增的功能,用于指定对应位置颜色的混合方式,参数值有 BLEND_RGBA_ADD、BLEND_SUB 等。如果不提供该参数的情况下,默认使用 source 的颜色覆盖 screen 的颜色。

获取窗口状态

pygame.display.get_active()
功能:当屏幕上的窗口处于活动状态时返回True

属性:get_active() -> bool

当窗口 Surface 被认为可以在屏幕上主动呈现并且可能对用户可见时,返回 True。这是pygame.display.set_mode()的默认状态。即使应用程序完全隐藏在另一个应用程序窗口后面,此方法也可能返回 True。

如果窗口 Surface 已被图标化或最小化(通过pygame.display.iconify()或通过操作系统特定的方法,例如大多数桌面上可用的最小化图标),这将返回 False。

该方法还可以由于其他原因返回 False,而无需用户明确图标化或最小化应用程序。一个值得注意的例子是,如果用户有多个虚拟桌面并且显示 Surface 不在活动的虚拟桌面上。

注意

此函数返回 True 与应用程序是否具有输入焦点无关。参阅 pygame.key.get_focused() 和 pygame.mouse.get_focused() 输入焦点相关的API。

事件类型

Pygame 定义了一个专门用来处理事件的结构,即事件队列,该结构遵循队列“先到先处理”的基本原则,通过事件队列,我们可以有序的、逐一的处理用户的操作(触发事件)。下述表格列出了 Pygame 中常用的游戏事件:

事件类型描述成员属性
QUIT用户按下窗口的关闭按钮none
ATIVEEVENTPygame被激活或者隐藏gain,state
KEYDOWN键盘按下unicode、key、mod
KEYUP键盘放开key、mod
MOUSEMOTION鼠标移动pos, rel, buttons
MOUSEBUTTONDOWN鼠标按下pos, button
MOUSEBUTTONUP鼠标放开pos, button
JOYAXISMOTION游戏手柄(Joystick or pad) 移动joy, axis, value
JOYBALLMOTION游戏球(Joy ball) 移动joy, axis, value
JOYHATMOTION 游戏手柄(Joystick) 移动joy, axis, value
JOYBUTTONDOWN游戏手柄按下joy, button
JOYBUTTONUP 游戏手柄放开joy, button
VIDEORESIZEPygame窗口缩放size, w, h
VIDEOEXPOSEPygame窗口部分公开(expose)none
USEREVENT触发一个用户事件事件代码

注意,当使用 Pygame 做游戏开发时,上述事件并非都会应用的到,因此在学习的过程中,我们要懂得触类旁通、举一反三。
请添加图片描述

键盘、鼠标事件示例

import pygame, sys
pygame.init()
screen = pygame.display.set_mode((600,400))
pygame.display.set_caption("pygame事件处理")

while True:
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			pygame.quit()
			sys.exit()
		elif event.type == pygame.KEYDOWN:
			if event.unicode == "":
				print("KEYDOWN:", "#", event.key, event.mod)
			else:
				print("KEYDOWN:", event.unicode, event.key, event.mod)
		elif event.type == pygame.MOUSEMOTION:
			print("[MOUSEMOTION]:", event.pos, event.rel, event.buttons)
		elif event.type == pygame.MOUSEBUTTONUP:
			print("[MOUSEMOTION]:", event.pos, event.buttons)
		elif event.type == pygame.MOUSEBUTTONDOWN:
			print("[MOUSEMOTION]:", event.pos, event.buttons)	
	pygame.display.update()
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 18:47:30  更:2022-07-20 18:50:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:36:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码