Làm thế nào để tạo hộp nhập văn bản bằng Pygame?

Category: Pygame

Trong bài viết này, chúng ta sẽ thảo luận về cách tạo hộp nhập văn bản bằng PyGame.

Cài đặt

Trước khi khởi tạo thư viện pygame, chúng ta cần cài đặt nó. Thư viện này có thể được cài đặt vào hệ thống bằng cách sử dụng công cụ pip do Python cung cấp để cài đặt thư viện. Pygame có thể được cài đặt bằng cách viết những dòng này vào terminal.

Chúng ta có thể cài đặt Pygame bằng lệnh:

pip install pygame

Pygame có thể được sử dụng để tạo hộp nhập văn bản, điều này sẽ được giải thích từng bước chi tiết hơn trong bài viết này.

Tiếp cận

  1. Sử dụng pygame.init() để khởi tạo tất cả các mô-đun đã nhập.

  2. Đặt kích thước màn hình.

  3. Đặt phông chữ của văn bản mà người dùng sẽ nhập.

  4. Tạo điều kiện theo khóa của người dùng.

  5. Ngoài ra, hãy khai báo hai biến chứa tên màu sẽ được sử dụng để nhập màu.

  6. Ngoài ra, lưu trữ dữ liệu đầu vào trong một biến để hiển thị trên màn hình.

  7. Bây giờ hãy vẽ hình chữ nhật và truyền đối số vào đó trên màn hình.

  8. Ngoài ra, hãy thiết lập kích thước màn hình cần hiển thị.

  9. Sử dụng clock.tick() có nghĩa là cứ mỗi giây thì phải truyền tối đa một khung hình nhất định.

Các chức năng được sử dụng

Chức năng

Sự miêu tả

clock.tick()

Nó được sử dụng để làm mới khung hình trong giây nhất định

pygame.exit()

Nó được sử dụng để thoát khỏi trò chơi

pygame.init()

Nó được sử dụng để khởi tạo tất cả các mô-đun được nhập

pygame.font.Font

Tạo một đối tượng Phông chữ mới từ một tệp

pygame.display.flip()

Nó sẽ chỉ cập nhật một phần của màn hình thành bản cập nhật chứ không phải toàn bộ khu vực

screen.fill((r, g, b, a))

Nó sẽ thiết lập màu nền của màn hình. Phạm vi màu nằm trong khoảng từ 0 đến 255.

Thực hiện

# nhập mô-đun sys
import pygame
import sys

# pygame.init() sẽ khởi tạo tất cả các mô-đun được nhập
pygame.init()

clock = pygame.time.Clock()

# tạo cửa sổ hiển thị trên màn hình
screen = pygame.display.set_mode([600, 500])

# phông chữ cơ bản cho văn bản người dùng nhập
base_font = pygame.font.Font(None, 32)
user_text = ''

# tạo ô nhập (rectangle)
input_rect = pygame.Rect(200, 200, 140, 32)

# color_active là màu (lightskyblue3) sẽ được kích hoạt khi người dùng click vào ô nhập
color_active = pygame.Color('lightskyblue3')

# color_passive là màu (chartreuse4) mặc định của ô nhập
color_passive = pygame.Color('chartreuse4')
color = color_passive

active = False

while True:
    for event in pygame.event.get():

        # nếu người dùng nhấn nút QUIT thì đóng màn hình
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        # kiểm tra nếu người dùng click chuột
        if event.type == pygame.MOUSEBUTTONDOWN:
            # nếu click nằm trong ô nhập thì kích hoạt
            if input_rect.collidepoint(event.pos):
                active = True
            else:
                active = False

        # xử lý khi người dùng nhập bàn phím
        if event.type == pygame.KEYDOWN:

            # kiểm tra nếu nhấn phím backspace
            if event.key == pygame.K_BACKSPACE:

                # lấy văn bản từ đầu đến -1 ký tự cuối
                user_text = user_text[:-1]

            # chuẩn Unicode được dùng để ghép chuỗi
            else:
                user_text += event.unicode

    # đặt màu nền cho màn hình
    screen.fill((255, 255, 255))

    # thay đổi màu ô nhập tùy theo trạng thái
    if active:
        color = color_active
    else:
        color = color_passive
        
    # vẽ ô nhập (hình chữ nhật) với màu tương ứng
    pygame.draw.rect(screen, color, input_rect)

    # hiển thị văn bản người dùng đã nhập
    text_surface = base_font.render(user_text, True, (255, 255, 255))
    
    # hiển thị văn bản tại vị trí cụ thể trên màn hình
    screen.blit(text_surface, (input_rect.x+5, input_rect.y+5))
    
    # điều chỉnh chiều rộng ô nhập để phù hợp với văn bản
    input_rect.w = max(100, text_surface.get_width()+10)
    
    # cập nhật phần hiển thị bị thay đổi, không cập nhật toàn màn hình
    pygame.display.flip()
    
    # đảm bảo tốc độ 60 khung hình/giây
    clock.tick(60)

Đầu ra:


Published on Jul 28, 2025

Related Posts