首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >博弈文本处理

博弈文本处理
EN

Ask Ubuntu用户
提问于 2016-04-11 17:34:32
回答 1查看 959关注 0票数 -1

我试图编写一个python/pygame程序来简单地显示文本。我希望它能工作,这样当你输入字母"A“时,它就会出现在屏幕上(有点像gedit/notepad/任何东西)。我是这样做的,将字母附加到一个字符串中,然后将其呈现并放到屏幕上。但是,我在实际获取用户输入方面有问题。我知道有pygame.key.get_pressed()函数,但只有当您真正知道希望用户按下哪个键(例如W向前推进)时,我才能知道如何使用它,但如果我不知道,则不能使用它。如果这让人困惑,下面是我的代码:

代码语言:javascript
复制
import pygame
import sys
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((600,500))
myfont = pygame.font.Font(None, 60)
inp = ""

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()

    keys = pygame.key.get_pressed()
    inp = inp + #THE PRESSED KEY
    screen.fill((0,0,200))
    txt = myfont.render(inp, True, (255,255,255))
    screen.blit(txt, (100,100))
    pygame.display.update()

我想知道如何使“按下键”被附加到字符串中。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2016-04-12 08:14:28

为此您可以使用KEYDOWN事件,因为pygame.key.get_pressed()将以当前FPS的速度给出结果。

下面是一个从代码中修改的工作示例:

代码语言:javascript
复制
import pygame
import sys
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((600,500))
myfont = pygame.font.Font(None, 60)
inp = ""

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
        if event.type == pygame.KEYDOWN:
            inp += event.unicode

    screen.fill((0,0,200))
    txt = myfont.render(inp, True, (255,255,255))
    screen.blit(txt, (100,100))
    pygame.display.update()

只改变了这一点:

  • 删除你的pygame.key.get_pressed()电话
  • 添加了pygame.KEYDOWN事件检查
票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/756305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档