改变了可点击图像的按钮功能

时间:2018-01-31 14:50:26

标签: python-3.x pygame

所以我有下面的按钮功能,如下所示(pygame):

button("Play", 50, 500, 100, 50, RED, LIGHT_RED, action = "Play")

我将它用于主菜单,它工作得很好,但是在可点击的矩形上的文字我想要的还有几个按钮,它们也是可点击的图像。我尝试将button()中的第一个参数更改为filename并在函数调用中插入文件的名称,但我得到一个'参数必须是字节或unicode'错误。我有什么想法可以改变这个函数来创建一个类似的imageButton()函数吗?

def text_to_button(msg, color, buttonx, buttony, buttonwidth, buttonheight, size = "small"):
    textSurf, textRect = text_objects(msg,color,size)
    textRect.center = ((buttonx+(buttonwidth/2)), buttony+(buttonheight/2))
    PLAYSURF.blit(textSurf, textRect)

def message_to_screen(msg, color, y_displace = 0, size = "small"):
    textSurf, textRect = text_objects(msg, color, size)
    textRect.center = (WIDTH / 2), (HEIGHT / 2) + y_displace
    PLAYSURF.blit(textSurf, textRect)

def text_objects(text,color,size):
    if size == "small":
        textSurface = smallfont.render(text, True, color)
    elif size == "medium":
        textSurface = medfont.render(text, True, color)
    elif size == "large":
        textSurface = largefont.render(text, True, color)

    return textSurface, textSurface.get_rect()

def button(text, x, y, width, height, inactive_color, active_color, action = None):
    cur = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()    
    if x + width > cur[0] > x and y + height > cur[1] > y:
        pygame.draw.rect(PLAYSURF, active_color, (x, y, width, height))
        if click[0] == 1 and action != None:
            if action == "Quit":
                pygame.quit()
                quit()
            if action == "Play":
                main()
            if action == "Settings":
                pass
            if action == "Shop":
                pass
            if action == "Pause":
                pause()                
    else:
        pygame.draw.rect(PLAYSURF, inactive_color, (x, y, width, height))        
    text_to_button(text, BLACK, x, y, width, height)

感谢。

1 个答案:

答案 0 :(得分:1)

这更适合评论,但我不能写一个,我写的是答案。

我使用另一个模块" pygbutton"按钮。这个模块完成了你想要做的事情。 link处的按钮类有一个源代码 。只使用该模块会很有帮助,或者查看代码可以帮助您创建自己的模块。