use*_*944 9 python pygame python-3.x
import pygame, sys
pygame.init()
screen = pygame.display.set_mode([800,600])
white = [255, 255, 255]
red = [255, 0, 0]
screen.fill(white)
pygame.display.set_caption("My program")
pygame.display.flip()
background = input("What color would you like?: ")
if background == "red":
screen.fill(red)
running = True
while running:
for i in pygame.event.get():
if i.type == pygame.QUIT:
running = False
pygame.quit()
Run Code Online (Sandbox Code Playgroud)
我试图询问用户他想要什么背景颜色。如果用户写红色,颜色不会改变并且仍然保持白色。
e0k*_*e0k 14
下次更新显示时,它将重绘为红色。添加pygame.display.update():
background = input("What color would you like?: ")
if background == "red":
screen.fill(red)
pygame.display.update()
Run Code Online (Sandbox Code Playgroud)
或者,您可以pygame.display.flip()在(有条件地)更改背景颜色后移动to。
另请参阅pygame.display.update 和 pygame.display.flip 之间的区别
实际上,改变了Surface对象screen.fill(red)中像素的颜色。更改颜色后需要更新显示。
但请注意,您应该仅在应用程序循环结束时更新显示一次。每帧显示的多次更新会导致闪烁。另请参见为什么 PyGame 动画闪烁。screen
backcolor = white
if background == "red":
backcolor = red
running = True
while running:
for i in pygame.event.get():
if i.type == pygame.QUIT:
running = False
# clear background
screen.fill(backcolor)
# draw scene
# [...]
# update display
pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)
解释:
您实际上是在一个物体上绘图Surface。如果您在与 PyGame 显示关联的Surface上绘图,则这不会立即在显示中可见。pygame.display.update()当使用或更新显示时,更改变得可见pygame.display.flip()。
这将更新整个显示的内容。
虽然pygame.display.flip()会更新整个显示的内容,但pygame.display.update()允许仅更新屏幕的一部分,而不是整个区域。pygame.display.update()是针对软件显示的优化版本pygame.display.flip(),但不适用于硬件加速显示。
| 归档时间: |
|
| 查看次数: |
52828 次 |
| 最近记录: |