Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么在PyGame中什么都不画?_Python_Pygame_Rectangles - Fatal编程技术网

Python 为什么在PyGame中什么都不画?

Python 为什么在PyGame中什么都不画?,python,pygame,rectangles,Python,Pygame,Rectangles,我使用pygame在python中启动了一个新项目,我希望下半部分用灰色填充,上半部分用黑色填充。我以前在项目中使用过rect绘图,但由于某种原因,它似乎被破坏了?我不知道我做错了什么。最奇怪的是每次我运行程序的结果都不一样。有时只有一个黑色的屏幕,有时一个灰色的矩形覆盖屏幕的一部分,但从来没有屏幕的一半 import pygame,sys 从pygame.locals导入* pygame.init() DISPLAY=pygame.DISPLAY.set_模式((800800)) pygame

我使用pygame在python中启动了一个新项目,我希望下半部分用灰色填充,上半部分用黑色填充。我以前在项目中使用过rect绘图,但由于某种原因,它似乎被破坏了?我不知道我做错了什么。最奇怪的是每次我运行程序的结果都不一样。有时只有一个黑色的屏幕,有时一个灰色的矩形覆盖屏幕的一部分,但从来没有屏幕的一半

import pygame,sys
从pygame.locals导入*
pygame.init()
DISPLAY=pygame.DISPLAY.set_模式((800800))
pygame.display.set_标题(“东西”)
pygame.draw.rect(DISPLAY,(200200),pygame.rect(040080400))
尽管如此:
对于pygame.event.get()中的事件:
如果event.type==退出:
pygame.quit()
sys.exit()

您需要更新显示器。 您实际上是在一个对象上绘图。如果在与PyGame显示屏关联的曲面上绘制,则不会立即在显示屏上看到。当使用或更新显示时,更改将变为visibel

见:

这将更新整个显示的内容

虽然
pygame.display.flip()
将更新整个屏幕的内容,
pygame.display.update()
只允许更新屏幕的一部分,而不是整个区域
pygame.display.update()
是pygame.display.flip()的优化版本,用于软件显示,但不适用于硬件加速显示

典型的PyGame应用程序循环必须:

  • 通过调用或来处理事件
  • 根据输入事件和时间(分别为帧)更新游戏状态和对象位置
  • 清除整个显示或绘制背景
  • 绘制整个场景(绘制所有对象)
  • 通过调用或来更新显示
  • 限制每秒帧数以限制CPU使用率
导入pygame
从pygame.locals导入*
pygame.init()
DISPLAY=pygame.DISPLAY.set_模式((800800))
pygame.display.set_标题(“东西”)
clock=pygame.time.clock()
运行=真
运行时:
#处理事件
对于pygame.event.get()中的事件:
如果event.type==退出:
运行=错误
#清晰显示
显示。填充(0)
#画场景
pygame.draw.rect(DISPLAY,(200200),pygame.rect(040080400))
#更新显示
pygame.display.flip()
#限制每秒帧数
时钟滴答(60)
pygame.quit()
退出()

另请参见

您需要更新显示器。 您实际上是在一个对象上绘图。如果在与PyGame显示屏关联的曲面上绘制,则不会立即在显示屏上看到。当使用或更新显示时,更改将变为visibel

见:

这将更新整个显示的内容

虽然
pygame.display.flip()
将更新整个屏幕的内容,
pygame.display.update()
只允许更新屏幕的一部分,而不是整个区域
pygame.display.update()
是pygame.display.flip()的优化版本,用于软件显示,但不适用于硬件加速显示

典型的PyGame应用程序循环必须:

  • 通过调用或来处理事件
  • 根据输入事件和时间(分别为帧)更新游戏状态和对象位置
  • 清除整个显示或绘制背景
  • 绘制整个场景(绘制所有对象)
  • 通过调用或来更新显示
  • 限制每秒帧数以限制CPU使用率
导入pygame
从pygame.locals导入*
pygame.init()
DISPLAY=pygame.DISPLAY.set_模式((800800))
pygame.display.set_标题(“东西”)
clock=pygame.time.clock()
运行=真
运行时:
#处理事件
对于pygame.event.get()中的事件:
如果event.type==退出:
运行=错误
#清晰显示
显示。填充(0)
#画场景
pygame.draw.rect(DISPLAY,(200200),pygame.rect(040080400))
#更新显示
pygame.display.flip()
#限制每秒帧数
时钟滴答(60)
pygame.quit()
退出()

另请参见

在哪里更新显示器?(或)使用以下命令:pygame.display.update(),在哪里更新显示?(或)使用这个:pygame.display.update()@MinerBat这似乎是一个与您的系统缺少清除和刷新显示有关的副作用。这没有逻辑上的原因。与系统的内部交互也与事件处理有关。请参阅。@MinerBat这似乎是与您的系统缺少清除和刷新显示有关的副作用。这没有逻辑上的原因。与系统的内部交互也与事件处理有关。看见