我试图将用户键入的内容作为预览显示到屏幕上,当他们用鼠标左键单击时,它会将文本快速显示到屏幕上。你知道吗
from pygame import *
init()
screen = display.set_mode((640, 480))
clock = time.Clock()
running = True
font = font.SysFont("comicsansms", 72) # Default font
textC = "a" # Stores user input
text = font.render(textC, True, (255,0,0)) # Render Text
while running:
mx, my = mouse.get_pos()
mb = mouse.get_pressed()
for e in event.get():
if e.type == QUIT:
running = False
if e.type == KEYDOWN:
print(textC)
if key.get_pressed()[K_BACKSPACE]:
textC = textC[:-1] # removes last letter
else:
textC += e.unicode # adds letter
screen.fill((255, 255, 255)) #fill screen white
screen.blit(text, (mx, my)) # display text
display.flip()
clock.tick(60)
quit()
我修改了您的示例,将存储的文本放在您单击的位置。更改
textC
时,需要更新text
曲面。我还可以在鼠标单击时清除textC
缓冲区。你知道吗如果希望文本持久化,则需要创建文本表面及其位置的列表,然后在每一帧中遍历它们。在这种情况下,可能值得考虑Sprites。你知道吗
首先,您没有正确捕捉鼠标事件。使用
MOUSEBUTTONDOWN
事件的方式与使用KEYDOWN
键事件的方式相同,然后使用mouse.get_pressed
来知道正在按下哪个鼠标按钮。你知道吗第二,问题是每次
screen.fill
执行时,所有的表面都会被擦除,因此有必要以某种方式跟踪文本和呈现文本的位置。它可以是一个列表。你知道吗所以你的代码看起来像这样
相关问题 更多 >
编程相关推荐