Pygame 中的最佳小键盘

Optimal Numpad in Pygame

我正在尝试创建一个小键盘。

我尝试制作小键盘的方式是这样的:

class One:

 def __init__(self,c,msg):
     self.screen = c.calculator
     self.screen_rect = self.screen.get_rect()
     self.settings = c.settings
     self.width,self.height = 60,60 
     self.button_color = (230,230,230)
     self.text_color = (100,100,100)
     self.rect = pygame.Rect(30,600,self.width,self.height)
     self.font = pygame.font.SysFont('Comic Sans MS',20,bold=pygame.font.Font.bold)
     self._prep_msg(msg)

 def _prep_msg(self,msg):
     self.msg_image = self.font.render(msg,True,self.text_color,self.button_color)
     self.msg_image_rect = self.msg_image.get_rect()
     self.msg_image_rect.center = self.rect.center 

 def draw_button(self):
     self.screen.fill(self.button_color,self.rect)
     self.screen.blit(self.msg)

这种方法需要大量代码,每个 class 大约 9 个数字。

我希望有更好的方法来制作这个小键盘。

我想制作精灵,但我不知道如何更改文本:

self.One = One(self,"1")

有不懂的地方请追问

感谢您的帮助!

了解 Classes。您可以多次实例化 class。例如:

创建一个Button。按钮的位置是构造函数的参数:

class Button:
    def __init__(self, c, msg, x, y):                            # <--- x, y
        self.screen = c.calculator
        self.screen_rect = self.screen.get_rect()
        self.settings = c.settings
        self.width,self.height = 60,60 
        self.button_color = (230,230,230)
        self.text_color = (100,100,100)
        self.rect = pygame.Rect(x, y, self.width, self.height)   # <--- x, y
        self.font = pygame.font.SysFont('Comic Sans MS',20,bold=pygame.font.Font.bold)
        self._prep_msg(msg)

    def _prep_msg(self,msg):
        self.msg_image = self.font.render(msg,True,self.text_color,self.button_color)
        self.msg_image_rect = self.msg_image.get_rect()
        self.msg_image_rect.center = self.rect.center 

    def draw_button(self):
        self.screen.fill(self.button_color,self.rect)
        self.screen.blit(self.msg)

创建 class 的多个 Instance Objects Button:

self.button_one = Button(self, "1", 30, 600)
self.button_two = Button(self, "2", 100, 600)