我想编写一个非常简单的程序,当我按下一个按钮时,它将文本输出到pygame屏幕,但是由于某些原因,当我按下该按钮时,它不会输出。有什么帮助吗?谢谢。
import pygame
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
X=800
Y=480
pygame.init()
pygame.font.init()
my_screen = pygame.display.set_mode((800, 480) ,
pygame.RESIZABLE)
my_font = pygame.font.Font('freesansbold.ttf' , 36)
text = my_font.render("Please wait, loading...",True,green)
textRect=text.get_rect()
textRect.center = (X // 2, Y //2)
pressed=False
boxThick=[0,10,10,10,10,10]
still_looping =True
while still_looping:
for event in pygame.event.get():
if event.type==pygame.QUIT:
still_looping=False
pygame.draw.rect(my_screen,(0,255,0),(0,0,200,200),boxThick[0])
pygame.draw.rect(my_screen,(50,50,50),(200,200,100,50),0)
a,b,c = pygame.mouse.get_pressed()
if a:
pressed = True
else:
if pressed == True:
x,y = pygame.mouse.get_pos()
if x> 200 and x<300 and y>200 and y<200:
my_screen.blit(text,textRect)
pressed = False
pygame.display.update()
答案 0 :(得分:0)
文本不显示,因为条件 y>200 and y<200
总是用 False
求值。由于矩形区域的高度为 50,因此条件必须为 y>200 and y<250
:
if x> 200 and x<300 and y>200 and y<200:
if x> 200 and x<300 and y>200 and y<250:
# [...]
由于可以在 Python 中链接比较运算符,因此可以简化代码:
if 200 < x < 300 and 200 < y < 250:
# [...]
但是,如果您想测试鼠标指针是否在矩形区域内,我建议使用pygame.Rect
对象和collidepoint()
:
rect = pygame.Rect(200, 200, 100, 50)
x, y = pygame.mouse.get_pos()
if rect .collidepoint(x, y):
# [...]