当前位置: 首页 > 面试题库 >

当我们在键盘上打字时,如何使字符串的内容出现在屏幕上?

谷涵容
2023-03-14
问题内容

我有这个功能,玩家可以输入他的名字,但我想要每个字母
在他打字时出现在屏幕上。我的职责是:

def input_player_name():
    player_name_screen = True
    name = ""
    win.blit(player_name_bg, (0, 0))
    while player_name_screen:
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RETURN:
                    print(name)
                    player_name_screen = False
                else:
                    name += event.unicode                 
        pygame.display.update()
        clock.tick(fps)

如果我在名字后面写上“print(name)”+=事件.unicode`,每件事
出现在控制台中。我一定要用这种东西吗

textsurface = game_font.render(str(name), False, (255, 255, 255))
    win.blit(textsurface, (0, 0))

and make it update each time something new goes into name? Thanks for your
help


问题答案:

You can either use pygame.font
or pygame.freetype. In the
following I use pygame.font.
Waht you have to do is to generate a font html" target="_blank">object and render the text to a
pygame.Surface
(name_surf). This surface has to be blit to the window continuously in the
loop. When the name changes, the the surface has to be recreated:

import pygame
import pygame.font

pygame.init()

win = pygame.display.set_mode((500, 200))
clock = pygame.time.Clock()
fps = 60

def input_player_name():
    # create font and text surface
    font = pygame.font.SysFont(None, 100)
    name_surf = font.render('', True, (255, 0, 0))
    player_name_screen = True
    name = ""
    while player_name_screen:
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RETURN:
                    player_name_screen = False
                else:
                    name += event.unicode
                    # recreate text surface   
                    name_surf = font.render(name, True, (255, 0, 0))

        win.blit(player_name_bg, (0, 0))
        # blit text to window
        win.blit(name_surf, (50, 50))
        pygame.display.update()
        clock.tick(fps)

input_player_name()


 类似资料:
  • 我尝试过在键盘出现时向上移动屏幕。我成功地做到了,但我需要知道如何仅在单击底部时滚动视图,而不是顶部,因为键盘只是触摸下面的。 应用程序是这样的: 我们的观点

  • 问题内容: 我尝试使搜索栏快速显示,但是当我按下搜索栏时,无法在屏幕上关闭键盘。当我尝试使用textfield时,此代码可以很好地工作。 当我按出文本框然后键盘消失时,它可以工作。我想用我的搜索栏来做类似的事情,因为当我使用搜索栏并使用像文本字段一样的方式时,它根本不起作用。任何参考或代码对我来说都是非常有用的。 问题答案: 试试这个 : 如果您不是通过编程方式创建的,而是从库中拖动了一个搜索栏,

  • null 但这三条不同的道路对我都不起作用。对于路径,以“无法找到指定的路径”失败。对于和路径,会出现“无法启动屏幕键盘”错误对话框。 我在这里找到了一个可能的解决办法,它比我想要的要复杂一点(二阳的帖子):http://social.msdn.microsoft.com/forums/en-us/netfx64bit/thread/10ebc62f-e6d7-4072-9fd1-ea3784a0

  • 所以我有一个带有文本字段的视图,但是文本字段在底部。当我单击键盘时,它会弹出并覆盖文本字段,这是我的问题。我想知道当键盘出现时是否有可能将视图的其余部分向上推?

  • 问题内容: 我是Java的新手,正在尝试学习Maps的概念。 我想出了下面的代码。但是,我想同时打印“键字符串”和“值字符串”。 我只能找到只打印“键字符串”的方法。 问题答案: 有多种方法可以实现此目的。这是三个。 输出量

  • 问题内容: 我看到很多这样的旧代码: 我看不到使用intern()的任何原因,因为在Javadoc中可以看到:“所有文字字符串和字符串值常量表达式都被插入。” 是否有此意图,也许是在该语言的过去版本中? 问题答案: 这是一种确保实际上不是常数的技术。 当Java编译器看到对最终静态基元或String的引用时,它将该常量的实际值插入使用它的类中。如果您随后在定义类中更改常量值,但不重新编译using