📜  如何使用 Pygame 创建文本输入框?

📅  最后修改于: 2022-05-13 01:55:48.649000             🧑  作者: Mango

如何使用 Pygame 创建文本输入框?

在本文中,我们将讨论如何使用 PyGame 创建文本输入框。

安装

在初始化 pygame 库之前,我们需要安装它。可以使用Python为其库安装提供的pip工具将该库安装到系统中。可以通过将这些行写入终端来安装 Pygame。

我们可以使用以下命令安装 Pygame:

pip install pygame 

Pygame 可用于创建文本输入框,本文将逐步说明。

方法

  1. 使用 pygame.init() 将初始化所有导入的模块。
  2. 设置屏幕尺寸。
  3. 设置用户将键入的文本的字体。
  4. 根据用户密钥创建条件。
  5. 此外,声明两个变量,其中包含将进一步用于输入颜色的颜色名称。
  6. 此外,将输入存储在变量中以显示在屏幕上。
  7. 现在绘制矩形并传递应该在屏幕上的参数。
  8. 另外,设置要渲染的屏幕大小。
  9. 使用 clock.tick() 这意味着每秒钟最多应该传递给定的帧。

使用的功能

FunctionDescription
clock.tick()It is used to refresh the frame in given second
pygame.exit()It is used to quit game
pygame.init()It is used to initialize all imported module
pygame.font.FontCreate a new Font object from a file
pygame.display.flip()It will update only a portion of the screen to updated, not full area
screen.fill((r, g, b, a))It will set the background color of the screen. The range is between 0 and 255.

执行

Python3
# import sys module
import pygame
import sys
  
  
# pygame.init() will initialize all
# imported module
pygame.init()
  
clock = pygame.time.Clock()
  
# it will display on screen
screen = pygame.display.set_mode([600, 500])
  
# basic font for user typed
base_font = pygame.font.Font(None, 32)
user_text = ''
  
# create rectangle
input_rect = pygame.Rect(200, 200, 140, 32)
  
# color_active stores color(lightskyblue3) which
# gets active when input box is clicked by user
color_active = pygame.Color('lightskyblue3')
  
# color_passive store color(chartreuse4) which is
# color of input box.
color_passive = pygame.Color('chartreuse4')
color = color_passive
  
active = False
  
while True:
    for event in pygame.event.get():
  
      # if user types QUIT then the screen will close
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
  
        if event.type == pygame.MOUSEBUTTONDOWN:
            if input_rect.collidepoint(event.pos):
                active = True
            else:
                active = False
  
        if event.type == pygame.KEYDOWN:
  
            # Check for backspace
            if event.key == pygame.K_BACKSPACE:
  
                # get text input from 0 to -1 i.e. end.
                user_text = user_text[:-1]
  
            # Unicode standard is used for string
            # formation
            else:
                user_text += event.unicode
      
    # it will set background color of screen
    screen.fill((255, 255, 255))
  
    if active:
        color = color_active
    else:
        color = color_passive
          
    # draw rectangle and argument passed which should
    # be on screen
    pygame.draw.rect(screen, color, input_rect)
  
    text_surface = base_font.render(user_text, True, (255, 255, 255))
      
    # render at position stated in arguments
    screen.blit(text_surface, (input_rect.x+5, input_rect.y+5))
      
    # set width of textfield so that text cannot get
    # outside of user's text input
    input_rect.w = max(100, text_surface.get_width()+10)
      
    # display.flip() will update only a portion of the
    # screen to updated, not full area
    pygame.display.flip()
      
    # clock.tick(60) means that for every second at most
    # 60 frames should be passed.
    clock.tick(60)


输出: