Pygame - rect 出现并立即消失 [英] Pygame - rect appears and immediately disappears
问题描述
我正在重写我的问题Pygame - rect 在我到达之前消失了 因为我想我没有描述清楚.
I am rewriting my question Pygame - rect disappears before I reach it because I think I have not described it clearly.
完整代码:
#! /usr/bin/python
import pygame, time, sys, random, os
from pygame.locals import *
from time import gmtime, strftime
pygame.init()
w = 640
h = 400
screen = pygame.display.set_mode((w, h),RESIZABLE)
clock = pygame.time.Clock()
x = y = 100
def starting():
basicfont = pygame.font.SysFont(None, 48)
text = basicfont.render('Starting...', True, (255, 255, 255), (0, 0, 255))
textrect = text.get_rect()
textrect.centerx = screen.get_rect().centerx
textrect.centery = screen.get_rect().centery
screen.fill((0, 0, 255))
screen.blit(text, textrect)
pygame.display.update()
def taskbar():
basicfont = pygame.font.SysFont(None, 24)
pygame.draw.rect(screen, ((0, 255, 0)), (0, h-40, w, 40), 0)
text = basicfont.render(strftime("%Y-%m-%d", gmtime()), True, (0, 0, 0))
text2 = basicfont.render(strftime("%H:%M:%S", gmtime()), True, (0, 0, 0))
screen.blit(text, (w - 100, h - 37))
screen.blit(text2, (w - 100, h - 17))
logoimage = pygame.image.load("C:\Users\chef\Desktop\logo.png").convert()
logoimage = pygame.transform.scale(logoimage, (40, 40))
screen.blit(logoimage, (0, h-40),)
def start():
button1, button2, button3 = pygame.mouse.get_pressed()
mousex, mousey = pygame.mouse.get_pos()
if 0 < mousex < 40 and h-40 < mousey < h:
if button1:
pygame.draw.rect(screen, ((255, 0, 0)), (0, int(h/2), int(w/6), int(h/2)-40), 0)
pygame.display.update()
starting()
#time.sleep(2)
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type==VIDEORESIZE:
w = event.dict['size'][0]
h = event.dict['size'][1]
screen=pygame.display.set_mode(event.dict['size'],RESIZABLE)
screen.fill((255, 255, 255))
taskbar()
start()
pygame.display.update()
clock.tick(60)
就像我原来的问题一样,当我按下 logoimage.png 并弹出红色矩形时,它显示一秒钟然后立即消失.我怎样才能让矩形保持直到我按下它的外面?
Just like my original question, when I press logoimage.png and the red rectangle pops up, it shows for a second then immediately disappears. How can I make it so that the rect will stay until I press outside of it?
推荐答案
您应该将 screen.fill((255, 255, 255))
移出 while
> 循环.这会导致问题,因为每次程序循环时,它都会将显示内容着色为白色,并覆盖您之前拥有的任何内容.解决此问题的一种方法是将 screen.fill((255, 255, 255))
移出循环并将其放在 pygame.draw.rect
之前功能.这将在您放置矩形之前为屏幕着色,并且不会继续填充它.例如:
You should move the screen.fill((255, 255, 255))
out of the while
loop. This is causing problems, because each time the program loops, it colors the display white, writing over whatever you had there before. One way to work around this is to move the screen.fill((255, 255, 255))
out of the loop and place it before the pygame.draw.rect
function. This will color the screen before you place the rect, and will not continue to fill it. For instance:
if button1:
screen.fill((255, 255, 255))
pygame.draw.rect(screen, ((255, 0, 0)), (0, int(h/2), int(w/6), int(h/2)-40), 0)
你也可以把它移到别处,或者想办法在你填满窗口后绘制矩形.
You could also move it elsewhere or come up with a way to draw rect every loop after you fill the window.
希望这有帮助.
这篇关于Pygame - rect 出现并立即消失的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!