python-3.x - 我该怎么做才能让我的 PyGame 窗口响应?
问题描述
我试图在每次运行代码时打开一个窗口,但每次运行代码时,它都会显示窗口无响应。
我的代码如下:
import os
import time
import sys
pygame.font.init()
WIDTH, HEIGHT = 500, 400
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("EscapeGame")
BG = pygame.transform.scale(pygame.image.load(os.path.join("GameMap1.png")), (WIDTH, HEIGHT))
def main():
fps = 60
clock = pygame.time.Clock()
def redraw_window():
WIN.blit(BG, (0,0))
pygame.display.update()
while True:
clock.tick(fps)
redraw_window()
for event in pygame.event.get():
if event.type == sys.exit:
sys.exit()
input()
main()
我已经用 event.get 和 event.pump 尝试了一些东西,我可能遗漏了一些非常基本的东西。有人能告诉我我还能尝试什么吗?
另外,我是 pygame 的新手,所以如果有人发现另一个错误,请告诉我。我将不胜感激。
解决方案
窗口没有响应,因为您没有通过调用来处理事件pygame.event.get()
。
虽然pygame.event.get()
在您的代码中,但它从未执行过,因为
a)它在一个你从不调用的函数中
b)你的代码块在input()
调用
您的代码应如下所示:
import os
pygame.init()
WIDTH, HEIGHT = 500, 400
def main():
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("EscapeGame")
BG = pygame.transform.scale(pygame.image.load(os.path.join("GameMap1.png")).convert_alpha(), (WIDTH, HEIGHT))
fps = 60
clock = pygame.time.Clock()
while True:
clock.tick(fps)
for event in pygame.event.get():
if event.type == pygame.QUIT:
return
WIN.blit(BG, (0,0))
pygame.display.flip()
main()
推荐阅读
- javascript - 使用 vanilla JS 显示输入类型 = 没有年份的日期
- php - 将 PHP 字符串转换为自定义格式的函数数组
- c# - 如何从 LiveCharts 轴获取轴大小(以像素为单位)以确定轴上的自定义分隔符步数?
- c++ - 将 CoreWindow 作为函数参数传递时出错
- android - 我的函数是异步的,为什么会出现 NetworkOnMainThread 异常?
- mysql - MySQL分组前如何更改顺序?
- output - 输出('',S);使用 Mpdf 和 PHPmailer 破解代码
- twincat - 连接变量
- informatica-powercenter - 安装 Informatica PowerCentre 10.4 PostgreSQL
- data-structures - 如何使用额外的指针打印链表中的所有循环?