57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
import pygame
|
||
|
||
class PlayernameInputbox:
|
||
def __init__(self, screen):
|
||
"""初始化文本框的属性"""
|
||
self.screen = screen
|
||
self.screen_rect = screen.get_rect()
|
||
|
||
# 设置按钮的尺寸和其他属性
|
||
self.width = 200
|
||
self.height = 50
|
||
self.box_color = (255, 255, 255)
|
||
self.text_color = (20, 20, 20)
|
||
self.font = pygame.font.SysFont("Calibri, Arial", 38)
|
||
|
||
# 创建按钮的rect对象,并使其在屏幕上居中
|
||
self.rect = pygame.Rect(0, 0, self.width, self.height)
|
||
self.rect.center = self.screen_rect.center
|
||
self.rect.y += 40
|
||
|
||
self.text = "Your Name"
|
||
self.login = False
|
||
|
||
|
||
def draw_inputbox(self):
|
||
"""将输入文本渲染为图像,并显示"""
|
||
self.text_image = self.font.render(self.text, True, self.text_color, self.box_color)
|
||
self.text_image_rect = self.text_image.get_rect()
|
||
self.text_image_rect.center = self.rect.center
|
||
|
||
self.screen.fill(self.box_color, self.rect)
|
||
self.screen.blit(self.text_image, self.text_image_rect)
|
||
|
||
|
||
def key_down(self, event):
|
||
"""输入新文本"""
|
||
unicode = event.unicode
|
||
key = event.key
|
||
|
||
if key == 8:
|
||
# 退位键
|
||
self.text = self.text[:-1]
|
||
return
|
||
if key == 301:
|
||
# 切换大小写键
|
||
return
|
||
if key == 13:
|
||
# 回车键
|
||
return
|
||
|
||
if unicode != "":
|
||
char = unicode
|
||
else:
|
||
char = chr(key)
|
||
|
||
self.text += char
|